Was mache ich falsch, dass Roslyn Code ohne Leerzeichen zwischen Bezeichnern und Schlüsselwörtern generiert? Außerdem wird am Ende des Methodenblocks ein Semikolon eingefügt. Hier ist mein Code:Warum Roslyn Methodencode ohne Leerzeichen generiert
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)
);
Und hier ist das Ergebnis, dass ich habe:
privatevoidsimpleButton1_Click(objectsender,EventArgse){};
Dank @Tamas für den Vorschlag, aber es scheint nicht zu funktionieren. Was ich von dieser Methode erhalten habe, ist, dass ich zusätzliche Anmerkungen zu der Methode hinzufügen werde, die ich nicht einfügen möchte. Stattdessen möchte ich nur die korrekte Methodensyntax erstellen. – WSK
Wo generieren Sie diesen Code? Ist dies ein Codefix-Anbieter und Sie befinden sich in Visual Studio? Wenn nicht, müssen Sie 'Formatter.Format()' auf dem Syntaxknoten verwenden, den Sie formatieren möchten. – Tamas
Formatter.Format behebt Parameter Teil aber immer noch die Methodendeklaration ist wie "privatevoidButton1_Click". Wahrscheinlich definierten Modifikator von 'SyntaxFactory.TokenList (SyntaxFactory.Token (SyntaxKind.PrivateKeyword))' und returnType von 'SyntaxFactory.ParseName (" void ")' ist nicht der beste Weg zu gehen. Irgendeine Idee, wie man es verbessert? BTW ein hässlicher Hack ist zu analysieren "" void "' anstelle von '" void "', um die gewünschten Ergebnisse zu finden – WSK