3

尝试断言时,这将失败并出现 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 中的子容器处理出现一些问题,因此我非常渴望找到解决方案。

有谁知道这个问题的干净解决方案?

4

1 回答 1

0

这确实是一个错误。我把它放在问题跟踪器中。它已固定在主干中,并将在 v3.1 中修复

于 2012-07-01T01:19:20.913 回答