Roslyn 生成的代码在标识符和关键字之间没有任何空格,我做错了什么?它还在方法 block 的末尾放置了一个分号。 这是我的代码:
SeparatedSyntaxList<ParameterSyntax> parametersList = new SeparatedSyntaxList<ParameterSyntax>().AddRange
(new ParameterSyntax[]
{
SyntaxFactory.Parameter(SyntaxFactory.Identifier("sender")).WithType(SyntaxFactory.ParseTypeName("object")),
SyntaxFactory.Parameter(SyntaxFactory.Identifier("args")).WithType(SyntaxFactory.ParseTypeName("EventArgs"))
}
);
MethodDeclarationSyntax newMethod = SyntaxFactory.MethodDeclaration(
SyntaxFactory.List<AttributeListSyntax>(),
SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PrivateKeyword)),
SyntaxFactory.ParseName("void"),
null,
SyntaxFactory.Identifier("simpleButton1_Click"),
null,
SyntaxFactory.ParameterList(parametersList),
SyntaxFactory.List<TypeParameterConstraintClauseSyntax>(),
SyntaxFactory.Block(),
SyntaxFactory.Token(SyntaxKind.SemicolonToken)
);
这是我得到的结果:
privatevoidsimpleButton1_Click(objectsender,EventArgse){};
最佳答案
为了更加全面,NormalizeWhiteSpace
应该提到。它将默认格式应用于给定节点:
MethodDeclarationSyntax newMethod = SyntaxFactory.MethodDeclaration(
SyntaxFactory.List<AttributeListSyntax>(),
SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PrivateKeyword)),
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.VoidKeyword)),
null,
SyntaxFactory.Identifier("simpleButton1_Click"),
null,
SyntaxFactory.ParameterList(parametersList),
SyntaxFactory.List<TypeParameterConstraintClauseSyntax>(),
SyntaxFactory.Block(),
null
)
newMethod = newMethod.NormalizeWhitespace();
ToString()
将产生预期的输出:
private void simpleButton1_Click(object sender, EventArgs args)
{
}
关于c# - 为什么 Roslyn 生成的方法代码没有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416745/