如何使方法获取方法信息并从中创建某种类型的委托(如Action
)?每次我想在我的代码中使用Action foo = (Action)Delegate.CreateDelegate(typeof(Action), info)
之类的内容时会感到很痛苦,特别是如果有问题的委托类型类似于Func<String, String, String, String, String, String>
答案 0 :(得分:0)
虽然您可以调用Delegate.CreateDelegate
,但它会返回Delegate
类型的对象。但是我能够制作出一个以你提供的类型返回的方法。它看起来像这样:
public static T MakeDelegate<T>(MethodInfo info){
return (T)(Object)Delegate.CreateDelegate(typeof(T), info);
}
并像这样调用它:
Action foo = MakeDelegate<Action>(bar);
我测试了它,它确实有效。
除此之外:我正在寻找一个问题来附上这个答案,但找不到答案,所以我做了一个。