MEF的主要目的是可扩展性;作为应用程序作者和插件(扩展)作者不同并且除了已发布的接口(合同)库之外没有特定了解对方的“插件”框架。MEF解决的另一个与通常的IoC不同的问题空间,以及其实力之一,是[扩展]发现。它具有许多可扩展的发现机制,这些机制可以对与扩展相关联的元数据进行操作。结合延迟加载标记的扩展能力,能够在加载之前查询扩展元数据,打开了大量有趣场景的大门,并大大增强了诸如[插件]版本控制等功能。MEF还有“合同适配器”,允许对扩展进行“适配”或“转换”(从类型到类型),并完全控制这些转换的详细信息。合同适配器相对于仅仅“发现”的含义和涵盖范围又开辟了另一个创造性的前沿。再次强调,MEFs的“意图”专注于匿名插件的可扩展性,这很大程度上使它与其他IoC容器区别开来。因此,虽然MEF可以用于组合,但相对于其他IoC,这只是其能力的一个小交汇点,而我认为我们将看到很多乱搞的互动。
Scott Hanselman和我在最近的Hanselminutes中对这个话题进行了更详细的讨论。 http://www.hanselminutes.com/default.aspx?showID=166