Castle 维基在多个地方都提到,对于通过容器解析出来的组件,我应该总是调用 container.Release() 方法。这显然适用于复杂的生命周期管理技术(例如 LifeStyle.Pooled)或使用特殊设施...
但是对于那些单例(在容器被销毁之前一直存在)和不需要释放资源的瞬态对象,我真的需要调用 Release() 吗?如果对于瞬态对象或单例进行 Release() 调用,这些调用似乎是多余的 - 例如,在瞬态对象不实现 IDisposable 接口时,内核只会发现它无法追踪该对象并返回...
似乎有一个“组件负担”的概念来跟踪解析瞬态对象时可能构建的其他可释放组件的“间接”引用。我理解,如果您不能100%确定它们是否有此类间接依赖关系,则需要释放瞬态对象。这是“敦促”所有 Castle 用户始终释放组件的主要原因吗?
ILifestyleManager
手中,而在即将到来的Windsor 3中,生命周期管理器在这里甚至拥有更多的控制权。 - Krzysztof Kozmic