由于历史原因,我们的应用程序有一个静态 StructureMap Container
,它用于所有地方的所有 IoC/DI。我们有很多测试来检查这个容器是否正确设置,但是确保测试不会相互干扰变得越来越困难。我想开始使用几个(非静态)容器来缓解这种情况。为了保持向后兼容性,在这个容器中配置的东西必须在主容器中仍然可用。
我已经为系统的一小部分实现了概念验证,它以这种方式只处理少数基本类型:
_pocContainer = new Container(/* setup code */);
MainContainer.Configure(c => c.For<C>.Use(ctx => _pocContainer.GetInstance<C>());
这是可行的,当从静态容器请求一个实例时C
,它是从_pocContainer
. 但是,我相当肯定这不是设计 StructureMap 时被视为正常用例的东西。这会导致性能不佳,还是有任何其他负面后果?有没有更好的方法来做到这一点?