我正在尝试使用Delegate.CreateDelegate
[MSDN link]绑定到静态泛型方法,但绑定失败。这是 PoC 代码:
public static class CreateDelegateTest {
public static void Main() {
Action actionMethod = CreateDelegateTest.GetActionDelegate();
Action<int> intActionMethod = CreateDelegateTest.GetActionDelegate<int>();
Func<int> intFunctionMethod = CreateDelegateTest.GetFunctionDelegate<int>();
}
public static Action GetActionDelegate() {
return (Action)Delegate.CreateDelegate(typeof(Action), typeof(CreateDelegateTest), "ActionMethod");
}
public static Action<T> GetActionDelegate<T>() {
return (Action<T>)Delegate.CreateDelegate(typeof(Action<T>), typeof(CreateDelegateTest), "GenericActionMethod");
}
public static Func<TResult> GetFunctionDelegate<TResult>() {
return (Func<TResult>)Delegate.CreateDelegate(typeof(Func<TResult>), typeof(CreateDelegateTest), "GenericFunctionMethod");
}
public static void ActionMethod() { }
public static void GenericActionMethod<T>(T arg) { }
public static TResult GenericFunctionMethod<TResult>() {
return default(TResult);
}
}
被actionMethod
正确创建,但intActionMethod
和intFunctionMethod
创建抛出。
为什么CreateDelegate
无法绑定到泛型方法?如何绑定它们?
我已经在 Microsoft Connect [链接]上提交了错误。如果您认为这是一个错误,请为它投票。
更新 2:我错误地认为绑定到非函数泛型方法成功。事实证明,任何泛型方法都无法绑定。