Roslyn, tanımlayıcılar ve anahtar kelimeler arasında boşluk olmadan kod oluşturmada ne yapıyorum? Ayrıca, yöntem bloğunun sonunda bir noktalı virgül koymaktadır. İşte benim kodudur:Neden Roslyn boşluk olmadan yöntem kodu üretiyor
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)
);
Ve burada yaşıyorum sonucudur:
privatevoidsimpleButton1_Click(objectsender,EventArgse){};
Teşekkür @Tamas öneri için ama işe görünmüyor Verilen düğüme biçimlendirme varsayılan uygular. Bu yöntemden elde ettiğim, eklemek istemediğim yöntem hakkında ek açıklamalar ekleyecektir. Bunun yerine sadece doğru yöntem sözdizimi oluşturmak istiyorum. – WSK
Bu kodu nereden üretiyorsunuz? Bu bir kod düzeltme sağlayıcısında mı ve Visual Studio'nun içinde misiniz? Değilse, biçimlendirmek istediğiniz sözdizimi düğümünde 'Formatter.Format()' ı kullanmanız gerekir. – Tamas
Formatter.Format, bölümleri değiştirir ancak yine de yöntem bildirimi "privatevoidButton1_Click" gibidir. 'SyntaxFactory.TokenList (SyntaxFactory.Token (SyntaxKind.PrivateKeyword))' ve returnType '' SyntaxFactory.ParseName ("void") 'tarafından muhtemelen tanımlı değiştirici, gitmek için en iyi yol değildir. Nasıl geliştirileceği hakkında bir fikrin var mı? BTW çirkin bir hack, "void" yerine "void" 'yerine istenen sonuçları bulmak için – WSK