2015-04-22 6 views
8

Di seguito è la funzione che sto usando per generare un metodo semplice -Come aggiungere parametri al metodo generato in Roslyn (Microsoft.CodeAnalysis)? - Hai bisogno di sintassi esatta

//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()); 

Ed ecco l'output:

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

Come si può vedere, il parametro non è "ABC fromObject "e ho cercato di capire la sintassi esatta per aggiungere correttamente i parametri.

Ho provato vari modi per capire la sintassi dei parametri e sono venuto in bianco per lo più.

MODIFICA: calcolato. Abbiamo solo dovuto fare un cambiamento nella seguente riga:

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

È necessario pubblicare la soluzione come risposta e quindi accettarla, anziché modificare la domanda. – svick

+0

Oh okay. Lo farà. Non lo sapevo –

risposta

4

Come suggerito, sto postando la soluzione qui -

capito. Bastava fare una modifica nella riga seguente:

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

Dove 'sourceClass' è una stringa del tipo richiesto.

Problemi correlati