.net 现有应用程序中的MEF Global CompositionContainer
我正在研究MEF作为现有.NET应用程序中插件解析的解决方案 在我能找到的所有示例中,主应用程序都创建了CompositionContainer的一个实例,并调用container.ComposeParts(this) 问题是,我的应用程序并非完全基于MEF构建,因此在对象图中存在一个没有MEF组件的漏洞。 因此,我的对象层次结构可能如下所示: 应用程序(MEF容器)->ObjectB (无MEF)->ObjectA(需要MEF (进口) 在这个对象层次结构中,我不可能在应用程序上调用container.composepart(this)并期望应用程序创建ObjectB并满足ObjectA的导入 全局公开CompositionContainer是一种好的做法,这样我就可以在应用程序启动之后编写ObjectA,还是必须重新构造整个应用程序以支持线性MEF对象图 曝光照片是一种好的做法吗 全局合成容器 我不认为这是一种好的做法,但当不可能在任何地方引入控制反转原理时,这是一种合理的折衷。有时,现有的代码库不完全在您的控制之下,或者是.NET和本机代码(例如COM组件)的复杂混合,或者太大而无法重构 在Silverlight中,从XAML构造对象也不在MEF的控制范围内,因此Microsoft引入了基本相同的解决方案:默认的MEF容器可以作为全局容器访问,并通过.net 现有应用程序中的MEF Global CompositionContainer,.net,mef,composition,.net,Mef,Composition,我正在研究MEF作为现有.NET应用程序中插件解析的解决方案 在我能找到的所有示例中,主应用程序都创建了CompositionContainer的一个实例,并调用container.ComposeParts(this) 问题是,我的应用程序并非完全基于MEF构建,因此在对象图中存在一个没有MEF组件的漏洞。 因此,我的对象层次结构可能如下所示: 应用程序(MEF容器)->ObjectB (无MEF)->ObjectA(需要MEF (进口) 在这个对象层次结构中,我不可能在应用程序上调用conta
PartInitializer.SatisfyImports调用(这一点)代码>
请注意,遵循此模式将全局的任何使用者紧密耦合到MEF和用于公开它的全局变量。无法像在其他应用程序或其他IoC容器中那样重用此代码。它还将使单元测试复杂化