Mvvm MEF对象之间的通信

Mvvm MEF对象之间的通信,mvvm,mef,mvvm-light,Mvvm,Mef,Mvvm Light,我正在构建一个workbench/IDE风格的应用程序,它使用MEF在启动时定位工具并将其加载到工作台中 我正在使用MVVM Light构建工作台和单独的工具。我现在有了一个观点,我希望工具能够相互通信,并与工作台通信 我不是说直接交流,更像是“嘿,如果有人感兴趣,我这里有一些数据”,感兴趣的工具可以收集数据 这看起来很像C#events,我知道我可以从定义事件的工具中导出一个接口,但我也想知道如何使用MVVM Light messenger来提供通信 我在这里看到,人们正在使用Prism的Ev

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

我正在使用MVVM Light构建工作台和单独的工具。我现在有了一个观点,我希望工具能够相互通信,并与工作台通信

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

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

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


我是在听建议,真的,有人使用过MEF-MEF对象的messenger吗?你会支持它而不是简单的旧C#事件吗。您可以使用普通的旧C#事件来做同样的事情。。。但如果做得好,您很可能最终实现了自己的pub/sub模式。如果你要这么做,为什么要重新发明轮子

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


值得一提的是,我曾经使用MVVM Light,但我发现Prism是一个更成熟的框架,有更好的文档、示例和更大的用户群可供学习。这真的只是我的观点——我知道很多人都喜欢MVVM Light。与他们一起玩,挑一个让你快乐的:)

谢谢你的回答@Nicros,我最终使用了MVVM Light的messenger。“稍后我会再看Prism,但我有一个技术/概念证明来交付ATM,所以我有点赶时间,”干杯