2013-10-31 34 views
9

考慮到我已經創建使用SymbolFactory.CreateProperty的象徵,我將如何添加空白。目前,我在編寫文檔時將可訪問性,修飾符,名稱,類型等全部串起來。也許我寫錯了,或者我需要添加額外的步驟來添加空白?我使用document.GetText()將它寫出到控制檯。如何添加空格和/或格式代碼?

回答

6

不,這是你所期望的。生成的節點沒有空格,意圖是一旦完成就可以處理它。

有兩種選擇:

  1. 呼叫.NormalizeWhitespace()節點上。這是一個積極的格式化程序,如果您生成的代碼不打算被人類使用,它就會非常有用 - 它會使輸出「有效」,但會吹走任何現有的格式。
  2. 呼叫Formatter.Format(),從Microsoft.CodeAnalysis.Formatting。這是一個花哨的格式化程序,它將嘗試保留現有的空白等,並且只會更新需要修復的節點。如果你正在更新用戶代碼並且你不想跺腳,這是最好的。
+0

再次感謝,但還有一個問題,我怎麼做它,所以它不會寫的完全限定的類型名稱,如全球:: ...的人,而我只是想人,我將導入所需命名空間? – epitka

+0

如果你把它放在一個的IDocument,有Roslyn.Services.DocumentExtensions.Simplify,這將產生一個新的文檔與所有的東西去掉。 IDocument上也有一個Format方法,這樣可以使一切變得更容易使用。 –

+1

這個答案給出了更新後的CTP格式化方法http://stackoverflow.com/a/23626524/22539 – foson

1

我有同樣的問題,我發現這個工作最好的:

node.WithTrailingTrivia(SyntaxFactory.Space) 

其中節點是任何形式的SyntaxToken