5

我们目前正在考虑将 CAB 或 MEF 用于我们的下一个应用程序。我没有看到任何关于如何处理同级控制通信的事件代理的 codeplex 示例,也许我错过了。MEF 中的控件间通信如何工作?

此外,我们计划使用为 CAB 框架提供附加组件的 Infragistics。Infragistics 控制与 MEF 的集成程度如何?

总体而言,MEF 值得追求一个相当大的、15,000 小时的严格开发、应用程序吗?

4

4 回答 4

7

我可能错了,但我认为 MEF 没有任何事件代理。它是一个类似于 ioc 容器的通用组合引擎,但旨在提供更通用的插件和应用程序可扩展性解决方案。另一方面,CAB 和 Prism 是允许由 UI 组件组成的复合应用程序的 UI 框架。由于 UI 组件很可能需要相互通信并响应其他 UI 组件中的活动,因此底层框架需要提供 UI 组件之间的事件(发布/订阅)机制。

于 2009-05-22T16:25:35.200 回答
6

如果您将 MEF 与 WPF 和 MVVM 模式一起使用,那么您的部件通常会导出 ViewModel 类和 View 类(例如 DataTemplates 等)。您的 View 绑定到 ViewModel 并使用依赖属性和命令来回通信。因此,如果 Part A 需要与 Part B 通信,那么 Part A 可以 Import 对 Part B 的 ViewModel 的引用,他们可以来回进行方法调用。Part A 还可以为 Part B 的事件等注册事件处理程序。

于 2009-05-25T12:04:26.577 回答
6

MEF 不包括事件机制,但是您可以将 Prism 的事件聚合器与 MEF 一起使用。我在这里做了一个关于这个的帖子。

http://codebetter.com/blogs/glenn.block/archive/2009/02/23/event-aggregation-with-mef-with-and-without-eventaggregator.aspx

它的工作方式基本上是导出 Prism 的复合事件类。

HTH格伦

于 2009-05-25T17:47:16.640 回答
2

我同意斯科特的观点。“通用” pub/sub 模型看起来很有趣,但我很少需要它。如果我想要一个解耦的消息,我只需使用 MEF 定义一个合同 IMessage,然后导出一个实现,然后在我需要的地方导入。如果是强类型消息,我将导入我需要与之交谈的确切部分并直接发送消息。

于 2010-06-23T16:55:05.740 回答