Castle Windsor释放组件

时间:2011-01-03 18:30:00

标签: c# .net dependency-injection castle-windsor

编辑:

我已经完成了对问题的改写,因为我已经能够将问题简化为以下内容:

        var container = new WindsorContainer();

        container.Register(Component.For<IFoo>().ImplementedBy<Foo>().LifeStyle.Singleton);
        var foo = container.Resolve<IFoo>();
        container.Kernel.ReleaseComponent(foo);
        var foo2 = container.Resolve<IFoo>();

        Assert.IsTrue(foo != foo2) // this fails

public interface IFoo : IDisposable { }

public class Foo : IFoo {
    public void Dispose()
    {

    }
}

我必须在这里做一些非常愚蠢的事情......任何想法是什么?

基本上,我在这里要完成的是组件的所有分辨率在一段时间内(范围)返回相同的实例。如果有更好的方法来实现这一点,我当然愿意接受它。

编辑: 好的,所以我是RTFM,显然这是设计的。在这里完成我想要的最好的方式仍然是定制的生活方式经理吗?

感谢。

1 个答案:

答案 0 :(得分:3)

您的FooPerThread。这意味着您将获得一个新实例...如果您在另一个线程上请求它。如果我理解正确,问题在于您选择的生活方式,而不是您如何发布组件。