如何在CompilationUnit中找到方法Symbol的SyntaxNode?

Meh*_*dad 12 c# roslyn

我已经在编译单元中添加了一堆节点,现在我想查找与给定符号对应的语法节点:

var compilation = Compilation.Create("HelloWorld")
    .AddSyntaxTrees(SyntaxTree.ParseCompilationUnit("<some namespace>"));

ISymbol symbol =  // some arbitrary symbol, e.g. a method whose syntax node I had
    compilation.GlobalNamespace.GetNamespaceMembers().First();

SyntaxToken token = ???;   // how do I get the token for that symbol?
Run Code Online (Sandbox Code Playgroud)

如何获取该符号的令牌?

注意:

我的目标是能够从中获取每个方法的方法体MethodSymbol.

Kev*_*lch 22

使用ISymbol.DeclaringSyntaxReferences.

  • 是的,Parent.FirstAncestorOrSelf就是我的意思.(在内部,我们在`SyntaxToken`上有一个扩展方法).关于`DeclaringSyntaxNodes`,它已被添加**,因为**6月CTP,所以你必须等待下一个使用它. (2认同)