2


0

C#では、名前に基づいてイベントハンドラをオブジェクトに追加する方法を教えてください。

1つまたは複数のイベントの_name_に基づいて、 'myObject’にイベントハンドラを追加しようとしています。 'myObject’には 'MyEvent’という名前のイベントがあり、 'MyEventHandler’という名前のパブリックイベントハンドラがあります(これは名前で取得する必要はありませんが、MethodInfoを取得するために以下で実行します)。

これは私がこれまでに持っているものです:

EventInfo eventInfo = myObject.GetType().GetEvent("MyEvent");
MethodInfo handlerInfo = GetType().GetMethod("MyEventHandler");

if (eventInfo != null && handlerInfo != null)
   eventInfo.AddEventHandler(
      this,
      Delegate.CreateDelegate(eventInfo.EventHandlerType, handlerInfo)
   );

私はこのエラーが出ます:

_ ターゲットメソッドへのバインドエラー。 _

私は正しい方向に進んでいるのか、それとももっと良い方法があるのか​​。

1 Answer


2


私はこのコードで成功しました:

eventInfo.AddEventHandler(this、Delegate.CreateDelegate(typeof(eventInfo.EventHandlerType.FullName)、this、 "MyEventHandler"));

編集:追加:eventInfoEventHandlerType.FullNameので、イベントハンドラの種類に基づいてもう少し動的になります。