【问题标题】:Why use MEF for designtime/runtime in ViewModelLocator?为什么在 ViewModelLocator 中将 MEF 用于设计时/运行时?
【发布时间】:2013-02-13 02:15:49
【问题描述】:

我读过很多文章,其中在 ViewModelLocator 中使用 MEF 来分离设计时数据和运行时数据(具体来说,导入 designtiem ViewModels 和运行时 ViewModels)。 (我说的是MVVM-light框架中的VMLocator)

MEF 是一项出色的技术,但它不是为未知的依赖关系而设计的吗?显然设计时/运行时 ViewModel 是已知的依赖关系,应该由纯 IOC 容器处理。

有人能解释一下吗?谢谢

【问题讨论】:

    标签: mvvm runtime inversion-of-control mef design-time


    【解决方案1】:

    是的,MEF 主要是为未知的依赖设计的,但它肯定也可以用于已知的依赖。几个月前,我自己在 MEF 之上构建了一个有效的服务定位器。

    我认为在这里使用 MEF 很有意义的几个原因:

    • 从 .NET 4.0 开始,它就是框架的一个组成部分。不需要有另一个 3rd 方依赖项。

    • 它涵盖了依赖发现和 IoC。不管 API 是否看起来是为发现量身定做的,您仍然可以获得这两个功能。根据我的经验,依赖发现是对 IoC 容器的一个很好的补充。

    • 它有很好的可扩展性选项,通常仅用于这些目的,例如building your own parts catalog for view model locator to be able to supply design time models.

    我认为人们选择 MEF 的原因是它在一个包中提供了这些 MVVM 模式和场景所需的一切,并且随时可用。并不是说它一定是该领域最好的。

    这几乎不是您要寻找的答案,但我以类似的方式使用过 MEF,所以我添加了一个意见 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多