0

リフレクションを使用してdllをロードしてから、そのdllでメソッドを実行しようとしています。そのメソッドには、イベントをサブスクライブするこの行があります。この行で例外が発生します

この行は、リフレクションを使用して動的に呼び出しているdllにあります

evntAgg.GetEvent<ExceptionEvent>().Subscribe(Message);

例外は次のようなものです。

IDelegateReferenceのターゲットは、タイプSystem.Action`1 [[CustomType、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null]]である必要があります。パラメータ名:actionReference

これはイベント処理メソッドであり、動的に呼び出しているのと同じdllにあります

public void Message(ExceptionEvent exception)
{
//Do something
}

何か助けていただければ幸いです。

4

1 に答える 1

1

Prismのクラスを使用EventAggregatorする場合は、次の要件を満たす必要があります。

  1. から派生するイベントを定義しますCompositePresentationEvent<TEventArgs>。ここで、TEventArgsから派生します。System.EventArgs

  2. のインスタンスをパラメーターとして、イベントを処理するパブリックメソッドを定義します。TEventArgs例えば:

    public void HandleExceptionEvent(ExceptionEventArgs eventArgs)
    {
    }
    

    メソッドはパブリックである必要があります。パブリックでない場合、EventAggregatorはそのメソッドを呼び出すことができません。

  3. イベントを購読する:

    evntAgg.GetEvent<ExceptionEvent>.Subscribe(HandleExceptionEvent);
    

    説明したようにステップ2を実装したとすると、問題なく機能するはずです。

于 2013-03-25T08:44:27.677 に答える