gpt4 book ai didi

c# - 反射 MemberInfo 到 Func

转载 作者:太空狗 更新时间:2023-10-29 23:15:35 25 4
gpt4 key购买 nike

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

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

public bool func(int);

使用反射,我以某种方式获得了 MemberInfo 的实例“mi”,现在我想把它转换成Func<int, bool>;类型。像这样的东西:

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

有办法吗?

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

最佳答案

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 的类型.

但是!!!请注意,有一个 Func<int,bool>在创建 lambda 表达式方面基本上没有意义; lambda 表达式很少使用委托(delegate)

关于c# - 反射 MemberInfo 到 Func<T1, T2>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com