実行時にジェネリック デリゲートを接続したいので、以下のサンプル コードを確認してください。
ただし、デリゲートをイベントにバインドするとDelegate.CreateInstance
、ArgumentException
(「ターゲット メソッドへのバインド エラー」) が発生します。
class MyClass
{
public event EventHandler<MyEventArgs> OnRequest;
}
class MyEventArgs : EventArgs { }
class Program
{
static void Main(string[] args)
{
MyClass obj = new MyClass();
EventInfo eventInfo = obj.GetType().GetEvent("OnRequest");
Type delegateType = eventInfo.EventHandlerType;
MethodInfo methodInfo = typeof(Program).GetMethod("OnRequestReceived");
Delegate del = Delegate.CreateDelegate(delegateType, methodInfo);
}
public static void OnRequestReceived(object o, EventArgs e) { }
}