我开始学习 MEF,其中一件重要的事情是我可以使用 Export 属性标记某些项目(类、属性、方法),这样,任何想要使用它的人都会在实例变量上创建 Import 属性,并且用它。这种映射是如何发生的以及何时发生?导入是按需延迟发生还是所有组合都在启动时发生?抱歉这个无知的问题,我正在尝试理解流程。
最佳答案
它发生在一个称为“组合”的阶段。首先,您创建一个容器并将所有可能的零件来源加载到其中,然后您 Compose
它。当您进行组合时,它会解析所有依赖项,如果无法正确解析所有依赖项,则会抛出异常。
一般来说,您的部件在组合过程中被实例化(如果您在部件类的构造函数中设置断点,您将在调用 Compose()
期间看到断点命中)。但是,如果您使用Lazy<T>
,则可以以直接的方式覆盖它。作为导入的类型(假设您将零件导出为类型 T
)。
要了解该组合的工作原理,请查看 Compose()
方法here .
关于mef - MEF 运行时的导入和导出如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597720/