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-class 时,您需要满足以下要求:

  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 回答