我已经阅读了很多文章,其中在ViewModelLocator中使用MEF来分隔设计时数据和运行时数据(具体来说,导入设计ViewModel和运行时ViewModel)。 (我在谈论MVVM-light框架中的VMLocator)
MEF是一项出色的技术,但它不是为未知的依赖项而设计的吗?显然,设计时/运行时ViewModel是应该由纯IOC容器处理的已知依赖项。
请有人解释一下吗?感谢
答案 0 :(得分:2)
是的,MEF主要是针对未知的依赖项而设计的,但它也可以用于已知的依赖项。几个月前,我在MEF上建立了一个有效的服务定位器。
我看到为什么在这里使用MEF是有意义的几个原因:
从.NET 4.0开始,它是框架的一个组成部分。无需另外的第三方依赖。
它涵盖了依赖项发现和IoC。无论API是否适合发现,您仍然可以获得这两个功能。根据我的经验,依赖项发现是IoC容器的一个很好的补充。
它具有良好的可扩展性选项,通常仅用于这些目的,例如: building your own parts catalog for view model locator to be able to supply design time models
我认为人们选择MEF的原因是它提供了这些MVVM模式和场景所需的所有功能,并且可以随时使用。并不是说它必然是该领域最好的。
这几乎不是你想要的,但我以类似的方式使用了MEF,所以我添加了一个观点:)