查找ISymbol的SyntaxNode

Bre*_*ead 2 c# roslyn

给定一个SemanticModel实例和一个ISymbol与它的产生密切相关,是有可能得到SyntaxNodeISymbol

基本上与GetDeclaredSymbol方法相反SemanticModel

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

Jer*_*vel 7

为了SyntaxNode从a 获得声明ISymbol,请使用ISymbol.DeclaringSyntaxReferences.

请注意,它可以返回多个引用(当您获得部分声明时为fe)或者没有(当它在外部声明时).

一个小例子:

var syntaxReference = propSymbol.DeclaringSyntaxReferences
                                .First()
                                .GetSyntax();
Run Code Online (Sandbox Code Playgroud)

GetSyntax()将返回一个,SyntaxNode所以你仍然应该把它投射到你感兴趣的确切类型.