2013-12-03 3 views
0

Я работаю в Prism, где атрибут CallerMember не работает с моим кодом. У меня есть метод Close и вы хотите знать, откуда метод Close получает вызовы. Обычно параметр memberName, отмеченный атрибутом CallerMember, должен получать имя вызывающего метода. Но код Subscribing and unsubscribing показывает, что этот eventAggregator имеет некоторые недопустимые аргументы. Любая помощь была бы весьма признательна.CallerMemberName Атрибут не работает с EventAggregator

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

ли Отказаться от подписки (this.Close) не работает или переменная MemberName всегда пусто, или что? –

+0

, в котором .net framework вы используете –

+0

@devhedgehog. Недавно добавленный параметр «memberName» не позволит скомпилировать код. Он показывает «Недопустимые аргументы». У меня нет проблем с подпиской и использованием атрибута CallerMember. –

ответ

0

Там может быть проблема в том, как вы назвали и использовали Unsubscribe метод EventAggregator, который является причиной вы получаете Invalid Arguments исключение.

отподписывание к Prism Event требует либо подписки маркера возвращаемого метод Subscribe или обратного вызова делегат вы прошли в Подписаться методом. Пожалуйста, обратитесь MSDN для получения дополнительной информации

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

Абонентский токен не требуется, чтобы отменить подписку на EventAggregator –

Смежные вопросы