2016-05-17 7 views
1

私はSyntaxRewriterを書いていますので、SyntaxNodeが私の訪問方法(実際にはIdentifierNameSyntax)に入っています。SyntaxNodeまたはSyntaxTreeからドキュメントまたはコンパイルを取得するには?

私がしなければならないことは、識別子が表すシンボルを調べることです。これはSemanticModelを使って行うことができます。

私が理解しているように、私はDocumentまたはCompilationからSemanticModelを得ることができます。

したがって、理想的には、構文ノードからDocumentまたはCompilationに移動したいと考えています。

これは可能ですか?

+2

'SemanticModel'を' SyntaxRewriter'のコンストラクタに渡すことはできますか? – svick

+0

はい、それは私が現在やっていることです。ちょうどもっときれいな方法があるかどうか疑問に思った。私はSyntaxTreesが親のDocument/Compiliationsを持っているとは限りませんが、まだそれがあると認識しています:もしそうであれば、それにナビゲートできるのは良いことです。 – Schneider

+0

この関連する質問への回答は他人にも役立つかもしれません:http://stackoverflow.com/questions/37339130/how-to-getsemanticmodel-for-any-syntax-tree-in-referenced-projects-of-project-co/37352848 – Schneider

答えて

2

いいえ、ツリーの単一のドキュメントまたはコンパイルが保証されていないため、両方向です。存在しない可能性があります。また、複数のが存在する可能性があります。エディタに入力している場合は、可能であれば構文木を再利用して新しいコンパイルを作成しています。したがって、ツリーは一度に複数の場所に置くことができます。

関連する問題