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 に答える