LambdaExpression CompileToMethod

时间:2010-10-21 22:05:55

标签: c# .net lambda reflection.emit

我有几行代码

public void CreateMethod<TContract>(Expression<Action<TContract>> method)
{
   var innerMethod = Builder.DefineMethod("SomeName",MethodAttributes.Private);
   method.CompileToMethod(innerMethod);
   //more code
}

然而第二行失败了。我尝试过使用不同版本的DefineMethod,运气不佳。 有什么建议吗?

1 个答案:

答案 0 :(得分:9)

不幸的是,CompileToMethod需要一个静态方法作为其参数(参见here)。因此,您需要将MethodAttributes.Static添加到innerMethod的定义中。