簡體   English   中英

將委托作為類型參數傳遞給方法

[英]Pass a delegate as a type paramater into a method

一個人如何制作一個方法來獲取方法信息並從中創建某種類型的委托(如Action )? 每當我想執行此Action foo = (Action)Delegate.CreateDelegate(typeof(Action), info)在我的代碼中都出現類似Action foo = (Action)Delegate.CreateDelegate(typeof(Action), info)之類的痛苦,尤其是如果所涉及的Delegate類型類似於Func<String, String, String, String, String, String>

雖然可以調用Delegate.CreateDelegate ,但它返回Delegate類型的對象。 但是我能夠做出這樣的方法,並以您提供的類型返回。 看起來像這樣:

public static T MakeDelegate<T>(MethodInfo info){
    return (T)(Object)Delegate.CreateDelegate(typeof(T), info);
}

並像這樣調用它:

Action foo = MakeDelegate<Action>(bar);

我已經對其進行了測試,並且可以正常工作。

旁:我一直在尋找一個附加此答案的問題,但找不到答案,因此我提出了一個答案。

暫無
暫無

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

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