有没有一种简单的方法可以访问定义了特定SyntaxTree
的文档的TypeSyntax
?
每当Identifier
是TypeSyntax
时,我都可以获取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/