【问题标题】:How to publish Event via Prism EventAggregator?如何通过 Prism EventAggregator 发布事件?
【发布时间】:2014-11-12 07:18:32
【问题描述】:

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

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

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

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

在我的第一个模块中,我想通过以下方式发布/引发此事件”

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

但问题是我不能调用 Publish() 方法。我总是收到一条错误消息:

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

我在网上阅读了很多文章,但无法弄清楚我做错了什么。

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

【问题讨论】:

  • PubSubEvent&lt;T&gt; 是否与MyAggregatorEvent 位于同一个程序集中?如果没有,您需要在您编写 PublishEvent() 的项目中添加对此程序集的引用。
  • 来自您使用的 MSDN 文章:PubSubEvent can be found in the Microsoft.Practices.SubSubEvents namespace which is located in the Prism.PubSubEvents NuGet package.您是否包含此程序集?

标签: c# .net events prism-4 eventaggregator


【解决方案1】:

我终于找到了问题。

我混淆了模块中的类引用。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多