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
このコードはどこで生成されていますか?これはcodefixプロバイダにありますか?Visual Studioの中にいますか?そうでなければ、書式設定する構文ノードで 'Formatter.Format()'を使う必要があります。 – Tamas
Formatter.Formatはパラメータの部分を修正しますが、メソッドの宣言は "privatevoidButton1_Click"と同じです。 'SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PrivateKeyword))'によって修飾子が定義されていて、 'SyntaxFactory.ParseName(" void ")によるreturnTypeは最善の方法ではありません。どのようにそれを改善するためのアイデア? BTW醜いハックは、 '' void ''の代わりに' 'void''をパースして、望ましい結果を見つけることです。 – WSK