C# 如何通过Prism EventAggregator发布事件?

C# 如何通过Prism EventAggregator发布事件?,c#,.net,events,prism-4,eventaggregator,C#,.net,Events,Prism 4,Eventaggregator,目前,我正在尝试实现一个EventAggregator,使用prism在两个模块之间发布和订阅事件 我尝试以这里描述的方式实现它。 但我一开始就卡住了 我在我的基础结构命名空间中实现了一个事件: namespace Infrastructure { public class MyAggregatorEvent : PubSubEvent<string>{} } 命名空间基础结构 { 公共类MyAggregatorEvent:PubSubEvent{} } 在我的第一个模块

目前,我正在尝试实现一个EventAggregator,使用prism在两个模块之间发布和订阅事件

我尝试以这里描述的方式实现它。 但我一开始就卡住了

我在我的基础结构命名空间中实现了一个事件:

namespace Infrastructure
{
    public class MyAggregatorEvent : PubSubEvent<string>{}
}
命名空间基础结构
{
公共类MyAggregatorEvent:PubSubEvent{}
}
在我的第一个模块中,我希望以以下方式发布/引发此事件“

private PublishEvent()
{
IEventAggregator_eventAggregator=ServiceLocator.Current.GetInstance();
_eventAggregator.GetEvent().Publish(“测试”);
}
但问题是我无法调用Publish()方法。我总是会收到一个错误,错误是:

Infrastructure.MyAggregatorEvent不包含“Publish”的定义,并且没有接受第一个参数的扩展方法“Publish” 可以找到类型为“Infrastructure.MyAggregatorEvent”的(您是吗 缺少using指令或程序集引用?)D:\PviVm.cs ModulePvi

我在网上读了很多文章,但不知道我做错了什么


有人知道我做错了什么吗?

我终于找到了问题所在

我混淆了模块中的类引用

我在一个模块中使用了PubSubEvent类,在另一个模块中使用了CompositePresentationEvent类。这是我最初出现问题的根本原因


在我的所有模块中使用PubSubEvent后,它可以工作。

PubSubEvent是否与MyAggregatorEvent位于同一程序集中?是否与MyAggregatorEvent位于同一程序集中?如果不是,则需要从编写
PublishEvent()的项目中添加对此程序集的引用
。从您使用的MSDN文章中:
PubSubEvent可以在位于Prism.PubSubEvents NuGet包中的Microsoft.Practices.SubSubEvents命名空间中找到。
是否包含此程序集?
private PublishEvent()
{
    IEventAggregator _eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
    _eventAggregator.GetEvent<MyAggregatorEvent>().Publish("Test");
}