更新ParameterSyntaxList并不是在更新Visual Studio中的代码

本文关键字:更新 代码 Studio Visual ParameterSyntaxList 并不是 | 更新日期: 2023-09-27 18:17:21

我正在尝试写一个小的重构,将方法/actor参数分开,像这样:

:

public void Method(string a, string b, string c)
{
}
重构后

:

public void Method(string a, 
                   string b, 
                   string c)
{
}

下面是重构的代码,但问题是代码格式在Visual Studio中不会改变。调试时,我可以看到updatedParameterList的格式是正确的。我错过了什么?

private async Task<Document> BreakParametersApart(Document document, ParameterListSyntax parameterListNode, CancellationToken cancellationToken)
{
    ParameterSyntax firstParameter = parameterListNode.Parameters.First();
    int column = firstParameter.GetLocation().GetLineSpan().StartLinePosition.Character;
    StringBuilder paddingBuilder = new StringBuilder("'n");
    for (int i = 0; i < column; i++)
        paddingBuilder.Append(" ");
    string padding = paddingBuilder.ToString();
    List<ParameterSyntax> updatedParameters = new List<ParameterSyntax>();
    updatedParameters.Add(firstParameter.WithoutLeadingTrivia().WithoutTrailingTrivia());
    foreach (ParameterSyntax parameter in parameterListNode.Parameters.Skip(1).ToList())
        updatedParameters.Add(parameter.WithoutLeadingTrivia().WithoutTrailingTrivia().WithLeadingTrivia(SyntaxFactory.Whitespace(padding)));
    ParameterListSyntax updatedParameterList = SyntaxFactory.ParameterList(parameterListNode.OpenParenToken, SyntaxFactory.SeparatedList(updatedParameters), parameterListNode.CloseParenToken);
    SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken);
    var newRoot = root.ReplaceNode(parameterListNode, updatedParameterList);
    return document.WithSyntaxRoot(newRoot);
}

更新ParameterSyntaxList并不是在更新Visual Studio中的代码

我自己想出来的。要插入新行,我必须使用EndOfLine琐事:

.WithLeadingTrivia(SyntaxFactory.EndOfLine("'n"), SyntaxFactory.Whitespace(padding))