2014-11-12 18 views
0

현재 두 모듈 사이에서 이벤트를 게시하고 구독하기 위해 prism을 사용하여 EventAggregator를 구현하려고합니다.프리즘 EventAggregator를 통해 이벤트를 게시하는 방법은 무엇입니까?

여기서 설명한 방법대로 구현하려고합니다. MSDN. 그러나 나는 처음부터 이미 붙어 있습니다.

나는 내 인프라 네임 스페이스에서 이벤트를 구현 : 내가 게시/다음과 같은 방법으로 "

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

이 이벤트를 발생 싶습니다 내 첫 번째 모듈에서

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

그러나 문제는이다 게시() 메서드를 호출 할 수 없습니다. 항상 오류 메시지가 표시됩니다.

Infrastructure.MyAggr 'egatorEvent'에 'Publish'에 대한 정의가없고 'Infrastructure.MyAggregatorEvent'유형의 첫 번째 인수를 허용하는 'Publish'확장 메서드가 없습니다 ( 에 사용 지시문이나 어셈블리 참조가 누락 되었습니까?) D : \ PviVm.cs ModulePvi

나는 웹에서 많은 기사를 읽었지만 무엇이 잘못되었는지를 알 수 없었다.

어떤 사람이 잘못하고 있는지 아이디어가 있습니까?

+0

'PubSubEvent '은 (는)'MyAggregatorEvent'가있는 동일한 어셈블리에 있습니까? 그렇지 않다면, 당신은'PublishEvent()'를 작성한 프로젝트에서이 어셈블리에 대한 참조를 추가해야합니다. – Fka

+0

MSDN 기사에서 사용한 'PubSubEvent는 Prism.PubSubEvents NuGet 패키지에있는 Microsoft.Practices.SubSubEvents 네임 스페이스에서 찾을 수 있습니다.'이 어셈블리를 포함 시켰습니까? –

답변

0

마지막으로 문제가 발견되었습니다.

모듈에서 클래스 참조가 섞여 있습니다.

한 모듈에서는 PubSubEvent 클래스를 사용하고 다른 모듈에서는 CompositePresentationEvent 클래스를 사용했습니다. 이것은 나의 초기 문제의 근본 원인이었다.

내 모든 모듈에서 PubSubEvent를 사용한 후 작동합니다.