2015-04-22 21 views
8

下面是我用来生成一个简单的方法的功能 -如何将参数添加到Roslyn(Microsoft.CodeAnalysis)中生成的方法? - 需要确切的语法

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

和这里的输出:

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

正如你所看到的,参数是不是“ABC fromObject“,我一直在试图找出正确的语法来正确添加参数。

我试过各种方法来找出参数语法,并且大部分都是空白的。

编辑:算出来。只是不得不做出以下行的变化:

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

您应该发布您的解决方案作为答案,然后接受它,而不是编辑您的问题。 – svick

+0

哦,好的。会这样做。不知道。 –

回答

4

至于建议,我在这里张贴的解决方案 -

想通了。只需在以下行中进行更改:

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

其中'sourceClass'是所需类型的字符串。

相关问题