更新 ParameterSyntaxList 不是更新 Visual Studio 中的代码?
Updating a ParameterSyntaxList is not updating the code in Visual Studio?
我正在尝试编写一个小型重构,它将 method/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);
}
我自己想出来了。要插入新行,我必须使用 EndOfLine
琐事:
.WithLeadingTrivia(SyntaxFactory.EndOfLine("\n"), SyntaxFactory.Whitespace(padding))
我正在尝试编写一个小型重构,它将 method/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);
}
我自己想出来了。要插入新行,我必须使用 EndOfLine
琐事:
.WithLeadingTrivia(SyntaxFactory.EndOfLine("\n"), SyntaxFactory.Whitespace(padding))