Konstruktordeklaration von ObjectCreationExpressionSyntax mit Roslyn erhalten?

8

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 .

    
MatthewSot 12.06.2014, 00:09
quelle

1 Antwort

7

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).

%Vor%     
andyp 12.06.2014, 18:29
quelle

Tags und Links