0
我試圖寫一個小重構它除了破壞方法/演員參數是這樣的:更新ParameterSyntaxList不更新Visual Studio中的代碼?
前:
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);
}
一個挑剔:避免硬編碼\ N,因爲你想用你結束在是文件的格式行的一種方法可能是去了)的尾聲瑣事,並抓住那裏的任何EndOfLine瑣事。或者做其他事情。 –