C# 在具有范围生活方式的组件中使用的具有单一生活方式的依赖项的范围是什么?

C# 在具有范围生活方式的组件中使用的具有单一生活方式的依赖项的范围是什么?,c#,.net,castle-windsor,C#,.net,Castle Windsor,在同一容器上,每个web请求 在这种情况下,它们是等价的吗?也就是说,单例是否像以前那样有效地限定了作用域组件的生存期?或者它真的是一个单例(跨越多个web请求) 在广阔的温莎城堡里没有任何东西可以帮助我们 编辑:容器的组成 控制器组件注册决定生活方式。向singleton lifestyle注册的组件将被重用,直到其注册所在的容器被处置为止,而不管它被注入到其他什么组件中 如果另一个具有每个web请求生命周期的组件需要它,那么将在每个web请求上注入相同的singleton实例 对编辑的答复:

在同一容器上,每个web请求

在这种情况下,它们是等价的吗?也就是说,单例是否像以前那样有效地限定了作用域组件的生存期?或者它真的是一个单例(跨越多个web请求)

在广阔的温莎城堡里没有任何东西可以帮助我们

编辑:容器的组成


控制器组件注册决定生活方式。向singleton lifestyle注册的组件将被重用,直到其注册所在的容器被处置为止,而不管它被注入到其他什么组件中

如果另一个具有每个web请求生命周期的组件需要它,那么将在每个web请求上注入相同的singleton实例

对编辑的答复:


服务A被实例化一次。会话A每次都获得相同的服务实例A。命令为每个web请求获取会话a的一个新实例。

此处有一个错误,其中某些组件的注册寿命比依赖它们的其他组件短。这是Mark Seemann最近在这里写到的“俘虏依赖性问题”的一个例子:

例如:


服务A您能举一个例子来说明如何设置您所描述的生活方式/范围吗?因此,如果我理解正确,无论依赖关系的消费者将其生活方式设置为什么,如果依赖关系注册为单身生活方式,其生活方式无法由任何消费者决定。在容器的生命周期中,它确实是一个单体?是的,基本上就是这样。好吧,这与我听到的一些建筑科学相矛盾(想想BroScience,但与架构师有关),因为缺乏文档和修补,我无法证实这一点。谢谢,用测试代码说服自己应该很快!它的意思是相反的,即控制器依赖于一个“无状态”服务a…这能清除它吗?谢谢链接。我真的不该-1你!!我读到的问题(有点混乱)是由
服务a提出的