C# 有没有办法在CodeDom中的另一个方法中生成本地方法?

C# 有没有办法在CodeDom中的另一个方法中生成本地方法?,c#,.net,lambda,codedom,C#,.net,Lambda,Codedom,我正在使用CodeDom创建代码。但是,CodeDom不支持lambda语句。所以我现在试图通过创建一个本地方法来模拟lambda语句,并将该方法作为参数传递给另一个方法。像这样: public string MainMethod(string myParameter) { string g() { return instance.MainMethod(myParameter); } return someOtherMethod(g); } 已使用CodeDom生成方法“Mai

我正在使用CodeDom创建代码。但是,CodeDom不支持lambda语句。所以我现在试图通过创建一个本地方法来模拟lambda语句,并将该方法作为参数传递给另一个方法。像这样:

public string MainMethod(string myParameter)
{
    string g() { return instance.MainMethod(myParameter); }
    return someOtherMethod(g);
}
已使用CodeDom生成方法“MainMethod” 我想把局部方法放进去。然而,到目前为止,我找不到一种方法来做到这一点。我需要一些帮助

我已经尝试将CodeMemberMethod添加到CodeMemberMethod中,但似乎没有办法做到这一点。我似乎找不到任何替代品

当前我的CodeDom代码使用MethodInfo作为基础:

var method = new CodeMemberMethod();
method.Name = methodInfo.Name;
method.ReturnType = new CodeTypeReference(methodInfo.ReturnType);

//left out parameter stuff

var gMethod = new CodeMemberMethod() { Name = "g", ReturnType = new CodeTypeReference(methodInfo.ReturnType) };
gMethod.Statements.Add(new CodeMethodReturnStatement(new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("instance"), methodInfo.Name), parameterReferences.ToArray())));
method.Statements.Add(gMethod);
现在,痛苦在最后一句话中。实际上,我正在尝试将CodeMemberMethod添加到CodeMemberMethod,这是通过Statements属性不允许的。有没有其他方法可以做到这一点?

在C版本7之前都是不受支持的语言结构。CodeDOM的设计要早得多,并没有涵盖所有C#特性,即使是当时最新版本的C#。换句话说,不幸的是,无法声明“本地方法”并将其添加到另一个方法的
语句
集合中

相反,考虑声明一个单独的<>代码>私下的<代码>方法。您的类的公共接口将保持不变,并且很可能实现您想要的。但是,不可能隐式访问“外部方法”参数

也可以考虑进一步的想法。

< P>在C 7版本之前不是一个支持的语言结构。CodeDOM的设计要早得多,并没有涵盖所有C#特性,即使是当时最新版本的C#。换句话说,不幸的是,无法声明“本地方法”并将其添加到另一个方法的
语句
集合中

相反,考虑声明一个单独的<>代码>私下的<代码>方法。您的类的公共接口将保持不变,并且很可能实现您想要的。但是,不可能隐式访问“外部方法”参数

也要考虑进一步的想法。