3

嗨,我使用 NRefactory 提取字符串常量并将其替换为 i18n 的静态变量,我可以成功地做到这一点,但是当我使用 GetText() 输出我的代码时,它不会保留原始格式。我想以最少的格式更改来做到这一点。

谢谢。

4

2 回答 2

0

查看NRefactory CodeProject 文章的“修改 C# 代码”部分(最后一节)。

于 2012-10-18T18:03:25.253 回答
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);

现在您可以在 AST 上使用 Replace、Remove、InsertAfter 等方法。它适用于 ast 节点和偏移量。

它还跟踪修改,因此您不必担心多次更改的冲突。
有关 NRefactory 的更多示例,您可能还想查看我的博客

于 2014-03-14T11:07:04.893 回答