2016-05-17 21 views
1

我正在寫一個SyntaxRewriter,所以我有一個SyntaxNode進入我的訪問方法(實際上是一個IdentifierNameSyntax)。如何從SyntaxNode或SyntaxTree獲取文檔或編譯?

我需要做的是找出標識符代表什麼符號,我可以使用SemanticModel來做什麼。

據我所知,我可以從DocumentCompilation得到SemanticModel

因此,理想情況下,我想從語法節點導航到DocumentCompilation

這可能嗎?

+2

您能否將'SemanticModel'傳遞給'SyntaxRewriter'的構造函數? – svick

+0

是的,這就是我目前正在做的。只是想知道是否有一個更清潔的方式。我現在意識到SyntaxTrees可能並不總是具有父文檔/組合,但仍然:如果他們這樣做,能夠導航到它是很好的。 – Schneider

+0

對此相關問題的回答也可能用於其他人:http://stackoverflow.com/questions/37339130/how-to-getsemanticmodel-for-any-syntax-tree-in-referenced-projects-of-project-co/37352848 – Schneider

回答

2

不,因爲沒有保證單個文檔或編譯樹,在兩個方向。可能沒有,也可能有多個;如果您在編輯器中輸入內容,我們將創建新的編譯內容,並儘可能地重用語法樹。因此,樹可以一次在多個地方。

相關問題