2012-09-19 49 views
3

您好我使用NRefactory來提取字符串常量,並通過靜態變量替換爲i18n,我可以成功地做到這一點,但是當我用GetText()輸出我的代碼時,它不保留原始格式。我希望在最小格式更改的情況下做到這一點。NRefactory如何保持原始格式

謝謝。

回答

0

看看NRefactory CodeProject article的「修改C#代碼」部分(最後一部分)。

+0

該部分包含無效的代碼。對象「文件」從來沒有創建,我不能找到什麼類型的信息。 –

+0

@VladimirPerevalov:下載附加到文章的源代碼以查看上下文中的代碼片段。 – Daniel

0

如果您想保留當前的格式,您可以使用DocumentScript在AST上應用修改。它的工作原理是存儲在語法樹中的TextLocation屬性。

要創建你需要做下面的腳本:

IDocument document = new StringBuilderDocument("source code"); 
CSharpFormattingOptions policy = FormattingOptionsFactory.CreateAllman(); 
var options = new TextEditorOptions(); 

var script = new DocumentScript(document, policy, options); 

現在,您可以像使用替換法,刪除,InsertAfter等你AST。它適用於兩個ast節點以及偏移量。

它也跟蹤修改,所以你不必擔心多個變化的衝突。
有關NRefactory的更多示例,您可能還需要檢查我的blog