从TypeSyntax获取SyntaxTree

时间:2015-09-18 13:01:25

标签: c# .net roslyn

是否有一种简单的方法可以访问定义了特定SyntaxTree的文档的TypeSyntax

每当IdentifierTypeSyntax时,我都可以获得IdentifierNameSyntax属性,但我仍然无法安全地访问类型的SyntaxTree

更新

以下是我目前的情况:

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;
                        }
                    }

1 个答案:

答案 0 :(得分:1)

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

致电SemanticModel.GetSymbolInfo(TypeSyntax)获取SymbolInfo,然后阅读该符号的DeclaringSyntaxReferences property

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