c# - 从 TypeSyntax 获取 SyntaxTree

标签 c# .net roslyn

有没有一种简单的方法可以到达定义了特定 TypeSyntax 的文档的 SyntaxTree

每当 TypeSyntaxIdentifierNameSyntax 时,我都可以获得 Identifier 属性,但我仍然无法获得访问 的安全方法>类型的语法树

更新:

这是我目前拥有的:

var right = exp.Right as ObjectCreationExpressionSyntax;
                    if (right != null) {
                        Compilation comp;
                        if ((comp = activeProject.GetCompilationAsync().Result) != null) {
                            bool cst = comp.ContainsSyntaxTree(right.Type.SyntaxTree);
                            var semanticModel = comp.GetSemanticModel(right.Type.SyntaxTree);
                            var typeInfo = semanticModel.GetTypeInfo(right.Type);
                            Console.WriteLine();
                            //var c = comp.GetSemanticModel(comp);
                            //var model = c.GetTypeInfo(right.Type as TypeSyntax);
                            //var v = model.Type.DeclaringSyntaxReferences;
                        }
                    }

最佳答案

要读取类型信息,您需要获取语义模型。

调用SemanticModel.GetSymbolInfo(TypeSyntax)获取SymbolInfo,然后读取DeclaringSyntaxReferences property的符号。

请注意,部分类可能在多个文件中定义了多个符号。

关于c# - 从 TypeSyntax 获取 SyntaxTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652710/

相关文章:

c# - API 文档中的自定义附加信息

c# - 抽象类的非静态方法和静态方法有什么区别?

C# Regex 查找由可能的空格分隔的两个逗号

c# - 像浏览器一样检索网页内容

c# - 无法比较通用值

c# - 为什么在这种情况下使用 ConcurrentQueue?

c# - 使用 Roslyn,从字符串文字参数中找到调用方法

c# - 是否可以将独立的 C# 应用程序发布到 Linux?

c# - 关于 iCustomFormatter 问题的 String.Format 与 int.ToString

c# - Roslyn 获取所有解决方案项目引用