GetEvent<>。事件聚合器的订阅提供了异常

时间:2013-03-25 08:26:46

标签: c# prism eventaggregator

我正在使用反射加载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
}

任何帮助都会受到赞赏吗?

1 个答案:

答案 0 :(得分:1)

使用Prism的EventAggregator课程时,您需要满足要求:

  1. 定义一个派生自CompositePresentationEvent<TEventArgs>的事件,其中TEventArgs派生自System.EventArgs

  2. 定义处理事件的公共方法,将TEventArgs的实例作为参数;例如:

    public void HandleExceptionEvent(ExceptionEventArgs eventArgs)
    {
    }
    

    该方法需要公开,否则EventAggregator将无法调用该方法。

  3. 订阅您的活动:

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

    鉴于你已经实施了所描述的第2步,它应该没有问题。