查找 ISymbol 的 SyntaxNode

Finding SyntaxNode of an ISymbol

给定一个 SemanticModel 实例和一个与之关联的 ISymbol,是否有可能获得 ISymbolSyntaxNode

SemanticModel

GetDeclaredSymbol方法基本相反

我知道的唯一方法是用谓词搜索 SyntaxTree 根,有没有办法用更少的代码来做到这一点?

为了从 ISymbol 中获取 SyntaxNode 声明,请使用 ISymbol.DeclaringSyntaxReferences

请注意,它可以 return 多个引用(f.e。当你有部分声明时)或 none(当它在外部声明时)。

一个小例子:

var syntaxReference = propSymbol.DeclaringSyntaxReferences
                                .First()
                                .GetSyntax();

GetSyntax() 将 return 变成 SyntaxNode,因此您仍应将其转换为您感兴趣的确切类型。