尝试断言时,这将失败并出现 ObjectDisposedException:
[Test]
public void Resolve_SingletonAndDisposeChildContainer_ShouldNotDisposeSingleton()
{
// arrange
var container = new WindsorContainer();
container.AddFacility<TypedFactoryFacility>();
container.Register(Component.For<ISomeFactory>().AsFactory());
container.Register(Component.For<A>());
// uncomment the line below and the test will not fail
//container.Resolve<ISomeFactory>();
var childContainer = new WindsorContainer();
container.AddChildContainer(childContainer);
// act
var someFactory = childContainer.Resolve<ISomeFactory>();
container.RemoveChildContainer(childContainer);
childContainer.Dispose();
someFactory = container.Resolve<ISomeFactory>();
// assert
Assert.That(someFactory.Create(), Is.Not.Null);
}
原因是(可能)因为单例由子容器中的生活方式管理器处理,因此被丢弃。这会导致 MVC Web API 中的子容器处理出现一些问题,因此我非常渴望找到解决方案。
有谁知道这个问题的干净解决方案?