反映MemberInfo到Func <t1,t2 =“”> </t1,>

时间:2013-07-30 08:44:32

标签: c# reflection func

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

让我们说我有类型

的成员函数
public bool func(int);

使用反射,我以某种方式得到MemberInfo“mi”的实例,现在我想将其转换为Func<int, bool>;类型。类似的东西:

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

有办法吗?

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

1 个答案:

答案 0 :(得分:5)

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

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

然而!!!请注意,在创建lambda表达式方面,拥有Func<int,bool>在很大程度上是毫无意义的; lambda表达式很少使用委托