如何在Roslyn(Microsoft.CodeAnalysis)中为生成的方法添加参数? - 需要确切的语法

时间:2015-04-22 04:36:46

标签: c# code-generation code-analysis roslyn

以下是我用来生成简单方法的函数 -

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

1 个答案:

答案 0 :(得分:6)

正如所建议的那样,我在这里发布解决方案 -

想出来。只需在以下行中进行更改:

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

where&#39; sourceClass&#39;是一个必需类型的字符串。