dependency-injection - MEF(托管可扩展性框架)与 IoC/DI

标签 dependency-injection inversion-of-control mef

MEF(托管扩展性框架)解决了哪些现有 IoC/DI 容器无法解决的问题?

最佳答案

MEF的主要目的是可扩展性;当应用程序的作者和插件(扩展)的作者不同并且除了已发布的接口(interface)之外彼此没有特定的了解时,充当“插件”框架( 合约)库。

MEF 解决的另一个问题空间与通常的 IoC 嫌疑人不同,并且 MEF 的优势之一是[扩展]发现。它有很多可扩展的发现机制,可以对可以与扩展关联的元数据进行操作。来自 MEF CodePlex 网站:

“MEF 允许使用附加元数据标记扩展,从而促进丰富的查询和过滤”

与延迟加载标记扩展的能力相结合,能够在加载之前询问扩展元数据,为一系列有趣的场景打开了大门,并大大启用了诸如[插件]之类的功能版本控制。

MEF 还具有“契约(Contract)适配器”,允许扩展“适应”或“转换”(从类型 > 到类型),并完全控制这些转换的细节。合约适配器开辟了另一个与“发现”的含义和含义相关的创意前沿。

同样,MEF 的“意图”是紧密关注匿名插件的可扩展性,这与其他 IoC 容器有很大区别。因此,虽然 MEF 可用于组合,但这只是其功能相对于其他 IoC 的一个小交集,我怀疑我们 future 将会看到很多乱伦的相互作用。

关于dependency-injection - MEF(托管可扩展性框架)与 IoC/DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/108116/

相关文章:

android - Dagger 2 在 Kotlin 对象中注入(inject)上下文

c# - 默认构造函数是否应该将 NULL 传递给另一个构造函数以创建依赖项?

javascript - Angular 单元测试: Unknown provider: $$qProvider <- $$q <- $interval

angular - 在创建 NG_VALUE_ACCESSOR 时 forwardRef 是强制性的

java - 如何使用 guice 实现全局状态?

c# - 我如何告诉 MEF 该接口(interface)需要哪种类型?

WPF Prism - 如何能够从外部程序集将正确的 View 加载到未知的 View 模型?

dependency-injection - 使用 IoC 容器连接依赖项的首选方式是什么?

java - 是否有可能在不终止现有 Web 服务的情况下向部署在 Tomcat 上的 Web 服务添加模块

c# - MVVM MEF WindowFormHost