CallerMemberName属性不适用于EventAggregator

时间:2013-12-03 09:19:29

标签: c# wpf prism eventaggregator

我在Prism工作,其中CallerMember属性与我的代码不兼容。我有一个Close方法,想知道Close方法的调用方式。通常,使用CallerMember属性标记的memberName参数应该接收调用方法名称。但订阅和取消订阅代码显示,此eventAggregator有一些无效的参数。任何帮助都会非常感激。

private void Close(bool isOKCommand,[CallerMemberName] string memberName = "")
{
        this.eventAggregator.GetEvent<ShowWarningMessageEvent>().Unsubscribe(this.Close);
        if (isOKCommand)
        {
            //Doing some operations;
        }
}

1 个答案:

答案 0 :(得分:0)

您调用和使用Unsubscribe EventAggregator方法的方式可能存在问题,这是原因您获得Invalid Arguments例外。

  

取消订阅Prism事件需要订阅令牌   您通过Subscribe方法或回调委托返回   订阅方法。有关详细信息,请参阅MSDN

SubscriptionToken subscriptionToken = this.eventAggregator.GetEvent<ShowWarningMessageEvent>().Subscribe(<YourSubscribeMethod>);
this.eventAggregator.GetEvent<ShowWarningMessageEvent>().Unsubscribe(subscriptionToken);