C# Castle Windsor何时发布瞬态组件

C# Castle Windsor何时发布瞬态组件,c#,.net,castle-windsor,lifecycle,transient,C#,.net,Castle Windsor,Lifecycle,Transient,我来自Java和Spring的背景,我对Castle Windsor相当陌生。我已经读到,知道Castle何时发布瞬态组件是很重要的,因为它跟踪创建的所有组件。不过,我很难理解我的组件何时发布。以下是我的模型的基本知识: Singleton -> Singleton Typed Factory -> Transient Objects 如果我释放这个链中的第一个单例,那么由该链创建的所有瞬态对象都会被释放吗?我是否可以调用任何API来检查是否存在这种情况?我在温莎城堡网站上找不到任

我来自Java和Spring的背景,我对Castle Windsor相当陌生。我已经读到,知道Castle何时发布瞬态组件是很重要的,因为它跟踪创建的所有组件。不过,我很难理解我的组件何时发布。以下是我的模型的基本知识:

Singleton -> Singleton Typed Factory -> Transient Objects
如果我释放这个链中的第一个单例,那么由该链创建的所有瞬态对象都会被释放吗?我是否可以调用任何API来检查是否存在这种情况?我在温莎城堡网站上找不到任何全面的API文档。我发现的文档对我来说并不清楚

编辑: 我的问题归结为两个主要问题

  • 如果我有一个依赖于单例类型工厂(B)的单例对象(a),并且我发布了单例对象a,那么它实际上会发布B吗?下面回答中提到的博客帖子说,对singleton对象的释放调用被忽略,所以我的假设是不会释放
  • 如果我有一个由多个web请求同时使用的单例类型工厂来创建临时对象,并且由其中一个web请求释放,那么所有的临时对象是否都会被释放,无论它们是否是从该web请求创建的?似乎根据web请求或暂时的生活方式创建类型化工厂更好

  • 下面是一篇详细的文章,解释了温莎如何跟踪对象以及何时需要调用Release:

    更新您的更新

  • 单例上的任何发布都会被忽略,所以,是的,您是正确的——它不会被发布

  • 您只需担心发布您专门解决的组件。如果它是由Windsor(通过类型化工厂设施、子依赖解析程序等)解决的,不要担心它


  • 谢谢,这篇文章我已经读了好几遍了,但是我仍然不确定这篇文章没有涉及的一些细节。我在我的问题中添加了更多的细节,我特别想知道的是什么。您能看一下吗?在您的编辑中,您提到了web请求中的瞬态组件。如果这是针对web应用程序的,为什么不使用PerWebRequest生活方式(它有一个定义良好的端点,组件将在该端点发布)?@PatrickSteele如果我有一个PerWebRequest生活方式类型的工厂,它会自动释放它在请求结束时创建的所有临时对象吗?