mac*_*pak 5 code-formatting roslyn
在我的程序中,我使用 Roslyn,并且需要用新节点替换节点。例如,如果我有类似的代码
public void Foo()
{
for(var i = 0; i < 5; i++)
Console.WriteLine("");
}
Run Code Online (Sandbox Code Playgroud)
我想为 for 语句插入括号,我得到
public void Foo()
{
for(var i = 0; i < 5; i++)
{
Console.WriteLine("");
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用 NormalizeWhitespace,但如果我在 for 语句中使用它,我得到
public void Foo()
{
for(var i = 0; i < 5; i++)
{
Console.WriteLine("");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我希望 for 语句格式正确。有任何提示如何做吗?
编辑:我通过使用解决了它:
var blockSyntax = SyntaxFactory.Block(
SyntaxFactory.Token(SyntaxKind.OpenBraceToken).WithLeadingTrivia(forStatementSyntax.GetLeadingTrivia()).WithTrailingTrivia(forStatementSyntax.GetTrailingTrivia()),
syntaxNodes,
SyntaxFactory.Token(SyntaxKind.CloseBraceToken).WithLeadingTrivia(forStatementSyntax.GetLeadingTrivia()).WithTrailingTrivia(forStatementSyntax.GetTrailingTrivia())
);
Run Code Online (Sandbox Code Playgroud)
不过,Sam的回答也是正确的。
您需要使用.WithAdditionalAnnotations(Formatter.Annotation), 但仅适用于要格式化的特定元素。以下是NullParameterCheckRefactoring项目的示例。
IfStatementSyntax nullCheckIfStatement = SyntaxFactory.IfStatement(
SyntaxFactory.Token(SyntaxKind.IfKeyword),
SyntaxFactory.Token(SyntaxKind.OpenParenToken),
binaryExpression,
SyntaxFactory.Token(SyntaxKind.CloseParenToken),
syntaxBlock, null).WithAdditionalAnnotations(Formatter.Annotation, Simplifier.Annotation);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |