Delegate.CreateDelegate
[MSDNリンク]を使用して静的ジェネリックメソッドにバインドしようとしていますが、バインドに失敗します。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
ジェネリックメソッドにバインドできないのはなぜですか?それらにバインドする方法は?
MicrosoftConnect [リンク]でバグを送信しました。これがバグだと思われる場合は、投票してください。
更新2:非関数ジェネリックメソッドへのバインドが成功するとは間違っていました。ジェネリックメソッドはバインドに失敗することが判明しました。