查找 ISymbol 的 SyntaxNode
Finding SyntaxNode of an ISymbol
给定一个 SemanticModel
实例和一个与之关联的 ISymbol
,是否有可能获得 ISymbol
的 SyntaxNode
?
与SemanticModel
的GetDeclaredSymbol
方法基本相反
我知道的唯一方法是用谓词搜索 SyntaxTree
根,有没有办法用更少的代码来做到这一点?
为了从 ISymbol
中获取 SyntaxNode
声明,请使用 ISymbol.DeclaringSyntaxReferences
。
请注意,它可以 return 多个引用(f.e。当你有部分声明时)或 none(当它在外部声明时)。
一个小例子:
var syntaxReference = propSymbol.DeclaringSyntaxReferences
.First()
.GetSyntax();
GetSyntax()
将 return 变成 SyntaxNode
,因此您仍应将其转换为您感兴趣的确切类型。
给定一个 SemanticModel
实例和一个与之关联的 ISymbol
,是否有可能获得 ISymbol
的 SyntaxNode
?
与SemanticModel
GetDeclaredSymbol
方法基本相反
我知道的唯一方法是用谓词搜索 SyntaxTree
根,有没有办法用更少的代码来做到这一点?
为了从 ISymbol
中获取 SyntaxNode
声明,请使用 ISymbol.DeclaringSyntaxReferences
。
请注意,它可以 return 多个引用(f.e。当你有部分声明时)或 none(当它在外部声明时)。
一个小例子:
var syntaxReference = propSymbol.DeclaringSyntaxReferences
.First()
.GetSyntax();
GetSyntax()
将 return 变成 SyntaxNode
,因此您仍应将其转换为您感兴趣的确切类型。