使用MEF作为IoC

Ash*_*her 15 mef c#-4.0

在阅读了一些这样的内容之后:http://mikehadlow.blogspot.com/2008/09/managed-extensibility-framework-why.html

我知道MEF有一些我在IoC中找不到的功能,并且MEF有一些IoC的东西可能不像其他一些IoC系统那样先进.

我需要MEF的东西.我是否还需要一个IoC框架,或者我对MEF有什么好处?

阿谢尔

Mat*_*ott 8

取决于您的要求/现有代码.

如果您在IoC容器上构建了现有代码基础结构,则实际上可以将它们与MEF结合使用.最近我一直在构建ASP.NET MVC + MEF框架,我的几位读者一直在询问如何将Unity与我构建的MEF + MVC框架集成.由于一个名为Common Services Locator的项目,事实证明这非常简单.

CSL项目旨在提供服务位置的抽象,因此我可以为Unity获取CSL提供程序,使用自定义ExportProvider连接它,MEF自动开始编写IoC驱动的部件.

这是MEFs ExportProvider模型的优点之一,您可以轻松插入任何其他提供商,开始从各种来源拉出口.

上周我发表了关于将MEF + Unity(以及MEF + Autofac作为另一个例子)结合起来的博客,虽然我的例子适用于ASP.NET MVC,但对于大多数其他实现来说,这个概念是相同的.

如果您可以选择使用MEF构建新的东西,您可能会发现您不需要IoC容器,MEF可以处理属性注入,构造函数注入,部件生命周期管理和类型解析.

如果您有任何问题,请告诉我:)