Что я делаю неправильно, что Roslyn генерирует код без пробелов между идентификаторами и ключевыми словами? Он также помещает точку с запятой в конец блока метода. Вот мой код:Почему Roslyn генерирует код метода без пробелов
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){};
Спасибо @Tamas за предложение, но она не появляется на работе. Что я получил от этого метода, это добавит дополнительные аннотации к методу, который я не хочу вставлять. Вместо этого я просто хочу создать правильный синтаксис метода. – WSK
Где генерировать код? Является ли это поставщиком кода и вы находитесь внутри Visual Studio? Если нет, вам нужно использовать 'Formatter.Format()' на узле синтаксиса, который вы хотите отформатировать. – Tamas
Formatter.Format исправляет часть параметров, но все же объявление метода похоже на «privatevoidButton1_Click». Вероятно определенный модификатор 'SyntaxFactory.TokenList (SyntaxFactory.Token (SyntaxKind.PrivateKeyword))' и returnType by 'SyntaxFactory.ParseName (" void ")' не лучший способ. Есть идеи, как улучшить его? BTW уродливый взлом - это разбор '' void "' вместо '' void "' для поиска желаемых результатов – WSK