2014-11-12 5 views
0

В настоящее время им пытаются реализовать EventAggregator, используя призму для публикации и подписки на события между двумя модулями.Как публиковать событие через Prism EventAggregator?

Я пытаюсь реализовать его так, как описано здесь MSDN. Но я застрял уже в начале.

Я реализовал событие в моей пространстве имен Инфраструктура:

namespace Infrastructure 
{ 
    public class MyAggregatorEvent : PubSubEvent<string>{} 
} 

В моем первом модуле я хотел бы опубликовать/поднять это событие следующим образом»

private PublishEvent() 
{ 
    IEventAggregator _eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>(); 
    _eventAggregator.GetEvent<MyAggregatorEvent>().Publish("Test"); 
} 

Но проблема в том, что я не могу назвать метод Publish(). Я всегда получаю сообщение об ошибке:

Инфраструктура.MyAggr egatorEvent 'не содержит определения для «Публикация» и не используется метод расширения «Опубликовать», принимающий первый аргумент типа «Инфраструктура.MyAggregatorEvent» (вы используете без указания использования или ссылки на сборку?) D: \ PviVm.cs ModulePvi

Я прочитал много статей в Интернете, но не мог понять, что я делаю неправильно.

Есть ли у кого-нибудь идея, что я делаю неправильно?

+0

Является ли 'PubSubEvent ' расположенным в той же сборке с 'MyAggregatorEvent'? Если нет, вам нужно добавить ссылку на эту сборку из проекта, где вы написали 'PublishEvent()'. – Fka

+0

Из статьи MSDN, которую вы использовали: 'PubSubEvent можно найти в пространстве имен Microsoft.Practices.SubSubEvents, которое находится в пакете NuGet Prism.PubSubEvents.« Вы включили эту сборку? –

ответ

0

И наконец, я нашел проблему.

Я перепутал ссылки класса в своих модулях.

Я использовал класс PubSubEvent в одном модуле и CompositePresentationEvent Class в другом модуле. Это стало основной причиной моей первоначальной проблемы.

После использования PubSubEvent во всех моих модулях он работает.

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