gpt4 book ai didi

c# - 通过反射创建的传递方法,作为 Func 参数

转载 作者:太空狗 更新时间:2023-10-29 21:07:21 24 4
gpt4 key购买 nike

我有一个方法(仅供引用,我使用的是 C#),它接受一个“Func”类型的参数,假设它是这样定义的:

MethodAcceptingFuncParam(Func<bool> thefunction);

我已经定义了要传入的函数:

public bool DoStuff()
{
return true;
}

我可以很容易地这样调用它:

MethodAcceptingFuncParam(() =>  { return DoStuff(); });

到目前为止,一切正常。

现在,我不想传入 DoStuff() 方法,而是想通过反射创建此方法,并将其传入:

Type containingType = Type.GetType("Namespace.ClassContainingDoStuff");
MethodInfo mi = containingType.GetMethod("DoStuff");

=> 这行得通,我可以正确获取方法信息。

但这就是我卡住的地方:我现在想做类似的事情

MethodAcceptingFuncParam(() => { return mi.??? });

换句话说,我想将刚刚通过反射得到的方法作为MethodAcceptingFuncParam方法的Func参数的值传入。关于如何实现这一目标的任何线索?

最佳答案

您可以使用 Delegate.CreateDelegate , 如果类型合适。

例如:

var func = (Func<bool>) Delegate.CreateDelegate(typeof(Func<bool>), mi);
MethodAcceptingFuncParam(func);

请注意,如果函数在 MethodAcceptingFuncParam 中执行了很多次,这将比调用 mi.Invoke 并转换结果快很多 .

关于c# - 通过反射创建的传递方法,作为 Func 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886685/

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