5

我正在寻找一种将实例转换MemberInfo为“Func”类型的方法(稍后通过 lambda 表达式使用它)。

假设我有一个类型的成员函数

public bool func(int);

使用反射,我以某种方式获得了“mi”的实例MemberInfo,现在我想将它转换为Func<int, bool>;类型。就像是:

Func<int, bool f = myType.GetMember(mi.Name);

有没有办法做到这一点?

附言。Marc Grawell 的回答解决了我的问题,无需进一步评论

4

1 回答 1

5
Func<int,bool> f = Delegate.CreateDelegate(
           typeof(Func<int,bool>), target, (MethodInfo)mi);

请注意,这target是您要使用的对象func,因为它是非static方法。如果它是一种static方法,您可以省略它(或 pass null)。或者,如果您将其设为where是声明的类型,则可以省略target(或传递null)。Func<Foo, int, bool>Foofunc

然而!!!请注意,Func<int,bool>就创建 lambda 表达式而言,拥有 a 在很大程度上是没有意义的。lambda 表达式很少使用委托

于 2013-07-30T08:47:27.467 回答