2013-02-06 51 views
0

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

我使用MVVM Light构建工作台和单独的工具。现在我已经有了一个观点,我希望工具能够沟通彼此和工作台。

我不是说直接沟通,更像是“嘿,如果有人感兴趣,我有一些数据”,感兴趣的工具可以拿起数据。

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

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

我真的经过忠告,有没有人使用MEF - MEF对象的使者,你会主张它在普通的旧C#事件。

回答

0

你在这里看到的是介体模式。您可以使用普通的旧C#事件来做同样的事情......但要做到这一点,您很可能最终实现自己的一种pub/sub模式。如果你打算这么做,为什么重新发明轮子?

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

对于什么是值得的,我曾经使用MVVM Light,但是我发现Prism是一个更成熟的框架,具有更好的文档,示例和更大的用户群来学习。这只是我的看法 - 我知道很多热爱MVVM Light的人。和他们一起玩,选一个让你开心的东西:)

+0

感谢您的回答@Nicros,我最终使用了MVVM Light的信使。我会在晚些时候看看Prism,但我有一个技术/概念证明来提供ATM,所以我有点被推迟,欢呼声 – Darran