2015-04-22 8 views
8

Im Folgenden ist die Funktion verwende ich eine einfache Methode zur Erzeugung -Wie Parameter generierte Methode in Roslyn (Microsoft.CodeAnalysis) hinzufügen? - Sie benötigen genaue Syntax

//NOTE : SF = SyntaxFactory 
     List<ParameterSyntax> parameterList = new List<ParameterSyntax> 
     { 
      SF.Parameter(SF.Identifier(sourceObjectName)) 
     }; 
     // Create method 
     var method = SF.MethodDeclaration(SF.ParseName(destinationClass), functionName) 
      .WithBody(SF.Block(nodes)) 
      .AddModifiers(SF.Token(SyntaxKind.PublicKeyword)) 
      .AddParameterListParameters(parameterList.ToArray()) 
      .NormalizeWhitespace(); 
     // NEED TO ADD PARAMS TO CODE 
     Console.WriteLine(method.GetText()); 

Und hier ist der Ausgang:

public XYZ MapABCToXYZ(fromObject) // Should be 'ABC fromObject' 
{ 
    XYZ myObject = new XYZ(); 
    myObject.MyProperty = fromObject.MyProperty; 
    myObject.TestProperty = fromObject.TestProperty; 
    return myObject; 
} 

Wie Sie sehen können, ist der Parameter nicht „ABC fromObject "und ich habe versucht, die genaue Syntax herauszufinden, um Parameter korrekt hinzuzufügen.

Ich habe verschiedene Möglichkeiten versucht, die Parameter-Syntax, um herauszufinden, und haben leere meist kommen.

EDIT: es herausgefunden. Gerade hatte, um eine Änderung in der folgenden Zeile zu machen:

SF.Parameter(SF.Identifier(sourceObjectName)).WithType(SF.ParseTypeName(sourceClass)) 
+2

Sie sollten Ihre Lösung als Antwort posten und es dann akzeptieren, anstatt Ihre Frage zu bearbeiten. – svick

+0

Oh okay. Wird das machen. Ich wusste es nicht. –

Antwort

4

Wie bereits angedeutet, ich bin hier, um die Lösung zu veröffentlichen -

es herausgefunden. Musste nur eine Änderung in der folgenden Zeile vornehmen:

SF.Parameter(SF.Identifier(sourceObjectName)).WithType(SF.ParseTypeName(sourceClass)) 

Wobei 'sourceClass' eine Zeichenfolge des erforderlichen Typs ist.