我正在尝试使用 Roslyn 自动格式化代码以提高可读性。
这就是我的方法:
public SyntaxNode GetFormatedNode(SyntaxNode node)
{
var workspace = new AdhocWorkspace();
OptionSet options = workspace.Options;
options = options
.WithChangedOption(CSharpFormattingOptions.NewLinesForBracesInMethods, true)
.WithChangedOption(CSharpFormattingOptions.NewLinesForBracesInProperties, true)
.WithChangedOption(new OptionKey(FormattingOptions.UseTabs, LanguageNames.CSharp), true)
.WithChangedOption(new OptionKey(FormattingOptions.IndentationSize, LanguageNames.CSharp), 4);
return Formatter.Format(node, workspace, options);
}
例如,这就是我的代码现在给我的:
class Example
{
void Method()
{
Column col = new Column { ID = "mySuperColumnID", Code = "mySuperColumnCode" };
}
}
我想自动将其格式化为:
class Example
{
void Method()
{
Column col = new Column
{
ID = "mySuperColumnID",
Code = "mySuperColumnCode"
};
}
}
虽然我还没有实际测试过,但
NewLineForMembersInObjectInit
听起来这就是你想要的。 (这是一个对象初始值设定项,您需要在成员之后添加一个新行...)