33
A
回答
58
// Static method
Action action = (Action) Delegate.CreateDelegate(typeof(Action), method);
// Instance method (on "target")
Action action = (Action) Delegate.CreateDelegate(typeof(Action), target, method);
對於Action<T>
等,只是到處指定適當的委託類型。
在.NET中的核心,Delegate.CreateDelegate
不存在,但MethodInfo.CreateDelegate
的作用:
// Static method
Action action = (Action) method.CreateDelegate(typeof(Action));
// Instance method (on "target")
Action action = (Action) method.CreateDelegate(typeof(Action), target);
0
這似乎對約翰的建議基礎上工作過:
public static class GenericDelegateFactory
{
public static object CreateDelegateByParameter(Type parameterType, object target, MethodInfo method) {
var createDelegate = typeof(GenericDelegateFactory).GetMethod("CreateDelegate")
.MakeGenericMethod(parameterType);
var del = createDelegate.Invoke(null, new object[] { target, method });
return del;
}
public static Action<TEvent> CreateDelegate<TEvent>(object target, MethodInfo method)
{
var del = (Action<TEvent>)Delegate.CreateDelegate(typeof(Action<TEvent>), target, method);
return del;
}
}
相關問題
- 1. 從MethodInfo構建一個委託?
- 2. 我怎樣才能從行動委託創建一個MethodInfo
- 3. 從methodinfo獲取委託
- 4. 的MethodInfo和委託
- 5. 根據委託檢查MethodInfo
- 6. Dispatcher.Invoke與Action委託
- 7. 如何從main-viewcontroller創建一個靜態委託?
- 8. 創建一個屬性setter委託
- 9. C++委託創建
- 10. 如何事先不能知道方法簽名時如何從MethodInfo創建委託?
- 11. 如何爲QTreeWidget創建委託?
- 12. 如何從Action委託在C#中刪除的方法
- 13. 未調用UITableView委託方法。從另一個類創建
- 14. 如何從不從EventHandler繼承的委託創建IObservable?
- 15. 如何從結構的實例方法創建一個開放的委託?
- 16. 如何創建一個調用另一個類的委託方法的對象?
- 17. 如何檢查MethodInfo是否匹配泛型類型T的委託,其中T是Action還是Func?
- 18. 如何從委託方法的類創建對象?
- 19. 如何使用委託從TableViewCell.xib向ViewControllerB創建segue Objective c?
- 20. Action委託作爲成員不編譯
- 21. UICollectionView如何從委託
- 22. 建立一個獨立的委託?
- 23. 斯威夫特:創建一個多功能多播委託
- 24. 我應該創建一個新的委託實例嗎?
- 25. 創建一個對象作爲委託 - 目標C
- 26. 使用任意參數創建一個委託
- 27. C#創建一個觸發事件的委託?
- 28. 如何創建一個具有空目標的實例方法的委託?
- 29. C#如何創建可調用委託給另一個通用方法
- 30. 從委託
Upvoted。如何將此應用於DataEventArgs? http://ntackoverflow.com/questions/33376326/how-to-create-generic-event-delegate-from-methodinfo –
2015-10-27 18:57:56
'Delegate.CreateDelegate'似乎在.Net Core中不可用。那裏有任何想法? – IAbstract 2017-05-05 13:41:08
@IAbstract:有趣 - 我沒有發現。您可以改爲調用'MethodInfo.CreateDelegate'。 (剛剛嘗試過,它運行良好。) – 2017-05-05 13:48:51