mef - MEF 运行时的导入和导出如何工作?

标签 mef

我开始学习 MEF,其中一件重要的事情是我可以使用 Export 属性标记某些项目(类、属性、方法),这样,任何想要使用它的人都会在实例变量上创建 Import 属性,并且用它。这种映射是如何发生的以及何时发生?导入是按需延迟发生还是所有组合都在启动时发生?抱歉这个无知的问题,我正在尝试理解流程。

最佳答案

它发生在一个称为“组合”的阶段。首先,您创建一个容器并将所有可能的零件来源加载到其中,然后您 Compose它。当您进行组合时,它会解析所有依赖项,如果无法正确解析所有依赖项,则会抛出异常。

一般来说,您的部件在组合过程中被实例化(如果您在部件类的构造函数中设置断点,您将在调用 Compose() 期间看到断点命中)。但是,如果您使用Lazy<T>,则可以以直接的方式覆盖它。作为导入的类型(假设您将零件导出为类型 T )。

要了解该组合的工作原理,请查看 Compose()方法here .

关于mef - MEF 运行时的导入和导出如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597720/

相关文章:

mvvm - 如何使用MEF在MVVM中切换 View

MEF 和同一类的两个实例

.net - 托管可扩展性框架 (MEF) 与复合 UI 应用程序 block (CAB)

asp.net-mvc-4 - 所以我们已经让 MEF 与 MVC4 一起工作,基于约定的模型怎么样?

c# - 具有多个构造函数的 MEF 构造函数参数

dependency-injection - 为什么 MEF 有 [ImportMany] 而不仅仅是 [Import]

wpf - MVVM应用程序无法正确还原状态

c# - MVVM MEF WindowFormHost

architecture - 面向复合编程 (COP)、.NET 4.0、MEF 和 Oslo 存储库

asp.net-mvc - 如何将 MEF 与 ASP.NET MVC 4 和 ASP.NET Web API 集成