Ich versuche, Roslyn zu verwenden, um eine Objekterstellungsausdrücke in einer C # -Quelldatei zu nehmen und Namen alle Parameter hinzuzufügen (also von new SomeObject("hello")
bis new SomeObject(text: "hello")
.
Ich habe die ObjectCreationExpressionSyntax aus dem SyntaxTree sowie ein SemanticModel für die Lösung. Ich versuche, GetSymbol/TypeInfo
für den Typ ObjectCreationExpressionSyntax
zu verwenden, aber ich kann das anscheinend nicht verwenden, um die Parameternamen zu erhalten.
Grundsätzlich versuche ich Folgendes zu erreichen:
Speziell die Parameter von Something.Something
.
Fragen Sie die SemanticModel
für die SymbolInfo
für den Knoten, den Sie besuchen / umschreiben. Das zurückgegebene Symbol sollte immer ein IMethodSymbol
mit einer Eigenschaft Parameters
sein, die alle Parameter des Konstruktors enthält.
Aus Neugierde habe ich eine SyntaxRewriter
geschrieben, die genau das macht, was Sie wollen. Es wurde natürlich nicht gründlich getestet, es wird Fälle geben, die ich verpasst habe (oder einfach weggelassen habe, wie bereits benannte Parameter).