簡體   English   中英

使用反射創建的Pass方法作為Func參數

[英]Pass method, created with reflection, as Func parameter

我有一個方法(fyi,我正在使用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");

=>這個工作,我可以正確獲取methodinfo。

但這就是我被困的地方:我現在想做點什么

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

換句話說,我想通過反射傳遞方法作為MethodAcceptingFuncParam方法的Func參數的值。 關於如何實現這一點的任何線索?

如果類型合適,您可以使用Delegate.CreateDelegate

例如:

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

請注意,如果函數執行很多MethodAcceptingFuncParam ,這將是比調用快得多 mi.Invoke和鑄造結果。

使用Invoke:

MethodAcceptingFuncParam(() => { return (bool)mi.Invoke(null, null); })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM