编辑:
我已经完成了对问题的改写,因为我已经能够将问题简化为以下内容:
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,显然这是设计的。在这里完成我想要的最好的方式仍然是定制的生活方式经理吗?
感谢。
答案 0 :(得分:3)
您的Foo
是PerThread
。这意味着您将获得一个新实例...如果您在另一个线程上请求它。如果我理解正确,问题在于您选择的生活方式,而不是您如何发布组件。