【问题标题】:How to add parameters to generated method in Roslyn ( Microsoft.CodeAnalysis )? - Need exact syntax如何在 Roslyn ( Microsoft.CodeAnalysis ) 中向生成的方法添加参数? - 需要准确的语法
【发布时间】:2015-06-29 12:54:08
【问题描述】:

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

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

【问题讨论】:

  • 您应该发布您的解决方案作为答案然后接受它,而不是编辑您的问题。
  • 哦,好吧。会这样做。不知道。

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


【解决方案1】:

按照建议,我在此处发布解决方案 -

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多