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

时间:2011-01-04 19:49:10

标签: mef

我开始学习,MEF和其中一个重要的事情是我可以使用Export属性标记一些项目(类,propety,方法),这样,谁想要使用它将在一个实例变量上创建Import属性用它。这种映射是如何发生的以及它何时发生?进口是根据需要懒散进行还是所有组合都在启动时发生?对于无知的问题,我很抱歉,我正在努力了解这一流程。

1 个答案:

答案 0 :(得分:3)

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

通常,您的部件在合成期间会被实例化(如果您在部件类的构造函数中设置了断点,您将在调用Compose()期间看到断点)。但是,如果您使用Lazy<T>作为导入类型(假设您将部件导出为T类型),则可以直接覆盖此方法。

要查看合成的工作原理,请查看Compose()方法here