0

我正在构建一个工作台/IDE 风格的应用程序,它使用 MEF 在启动时将工具定位并加载到工作台中。

我正在使用 MVVM Light 来构建工作台和单独的工具。我现在有一点,我希望工具能够相互通信以及工作台。

我不是指直接交流,更像是“嘿,如果有人感兴趣,我这里有一些数据”,感兴趣的工具可以获取数据。

这看起来很像 C# 事件,我知道我可以从定义事件的工具中导出一个接口,但我也想知道使用 MVVM Light messenger 来提供通信。

我在这里看到人们正在使用 Prism 的 EventAggregator 来做同样的事情,因为 MVVM Light 的信使大致类似,我想我可以使用它。

我真的在寻求建议,有没有人使用 MEF 的信使 - MEF 对象,你会提倡它而不是普通的旧 C# 事件。

4

1 回答 1

0

您在这里看到的是中介者模式。您可以使用普通的旧 C# 事件来做同样的事情......但如果做对了,您很可能最终会实现自己的发布/订阅模式。如果你要这样做,为什么要重新发明轮子?

我喜欢使用 prism 的 EventAggregator,因为它是注入 MEF 的 Prism 框架的一部分。我使用了 Prism 的许多其他东西,所以很高兴能“免费”获得它。它还促进了与您的组件的松散耦合,并且像所有好的中介实现一样,它是使用弱事件模式实现的,这可以防止您在销毁已订阅事件的对象时需要避免的内存问题。

值得一提的是,我曾经使用过 MVVM Light,但我发现 Prism 是一个更成熟的框架,有更好的文档、示例和更大的用户群可供学习。这只是我的观点——我认识很多喜欢 MVVM Light 的人。和他们一起玩,然后选择一个让你开心的:)

于 2013-02-12T07:39:19.727 回答