我正在尝试在测试场景中在StructureMap中使用子容器。我有这样的情况,其中IFoo
是IFooDependent
的依赖项,而IFooDependent
在父级中被配置为单例。
var mockedIFoo = GetMockedIFoo();
var childContainer = parentContainer.CreateChildContainer();
childContainer.Model.For<IFooDependent>().Default.EjectObject(); // force re-resolution
childContainer.Inject(mockedIFoo);
childContainer.Configure(c => c.For<IFooDependent>().Use<FooDependent>());
还有其他依赖于IFoo
的对象,但是当我执行childContainer.GetInstance<IFooDependent>()
时,容器使用父容器中的注册解析了IFoo
,而不是我注入的实例。< / p>
我已经尝试过通过手动注册其他子项(通过手动注册一些其他依赖项)来进行注册,前提是在StructureMap的chain of responsibility实现中意味着一旦在父项中解决了请求,则在child将用于解决问题,但这似乎没有解决问题。