我正在研究 MEF 作为我们现有 .NET 应用程序中插件解析的解决方案。
在我能找到的所有示例中,主应用程序都会创建一个 CompositionContainer 实例并调用 container.ComposeParts(this)。
问题是,我的应用程序并非完全建立在 MEF 之上,因此对象图中存在一个没有 MEF 组件的漏洞。所以我的对象层次结构可能如下所示:
应用程序(MEF 容器)-> ObjectB(无 MEF)-> ObjectA(需要 MEF 导入)
在这个对象层次结构中,我不可能在应用程序上调用 container.ComposeParts(this) 并期望应用程序创建 ObjectB 并满足 ObjectA 的 Imports。
全局公开 CompositionContainer 是否是一种好习惯,以便我可以在应用程序启动之后的时间组合 ObjectA,或者我是否必须重组整个应用程序以支持线性 MEF 对象图?