我正在使用反射加载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
}
任何帮助都会受到赞赏吗?
答案 0 :(得分:1)
使用Prism的EventAggregator
课程时,您需要满足要求:
定义一个派生自CompositePresentationEvent<TEventArgs>
的事件,其中TEventArgs
派生自System.EventArgs
定义处理事件的公共方法,将TEventArgs
的实例作为参数;例如:
public void HandleExceptionEvent(ExceptionEventArgs eventArgs)
{
}
该方法需要公开,否则EventAggregator
将无法调用该方法。
订阅您的活动:
evntAgg.GetEvent<ExceptionEvent>.Subscribe(HandleExceptionEvent);
鉴于你已经实施了所描述的第2步,它应该没有问题。