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

每当IdentifierTypeSyntax时,我都可以获取IdentifierNameSyntax属性,但是仍然无法获得访问Type的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;
                        }
                    }

最佳答案

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

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

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

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

10-09 21:51