我正在寻找一种方法将MemberInfo
的实例转换为“Func”类型(稍后通过lambda表达式使用它)。
让我们说我有类型
的成员函数public bool func(int);
使用反射,我以某种方式得到MemberInfo
“mi”的实例,现在我想将其转换为Func<int, bool>;
类型。类似的东西:
Func<int, bool f = myType.GetMember(mi.Name);
有办法吗?
PS。 Marc Grawell的回答解决了我的问题,无需进一步评论
答案 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表达式很少使用委托。