gpt4 book ai didi

code-formatting - Roslyn - 替换节点并修复空格

转载 作者:行者123 更新时间:2023-12-01 00:56:41 25 4
gpt4 key购买 nike

在我的程序中,我使用 Roslyn,我需要用一个新节点替换一个节点。例如,如果我有这样的代码

public void Foo()
{
for(var i = 0; i < 5; i++)
Console.WriteLine("");
}

我想为语句插入括号,我得到
public void Foo()
{
for(var i = 0; i < 5; i++)
{
Console.WriteLine("");
}
}

我尝试使用 NormalizeWhitespace,但如果我在 for 语句上使用它,我会得到
public void Foo()
{
for(var i = 0; i < 5; i++)
{
Console.WriteLine("");
}
}

但是,我希望 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())
);

然而,山姆的回答也是正确的。

最佳答案

您需要使用 .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);

关于code-formatting - Roslyn - 替换节点并修复空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27322543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com