在Singleton中使用生活方式PerWebRequest的对象

时间:2012-11-28 13:07:47

标签: c# inversion-of-control castle-windsor

如果在每个请求中创建了在Singleton中具有生活方式PerWebRequest的对象,我在文档中找不到任何引用。

对我来说,似乎当在Singleton中解析PerWebRequest对象时,它将被本地存储到Singleton对象中,并且它不再作为PerWebRequest对象。

是错误还是功能?

2 个答案:

答案 0 :(得分:3)

请您澄清一下“在Singleton中使用生活方式PerWebRequest的对象”是什么意思?如果你的意思是你有一个Singleton生活方式的对象依赖于具有PerWebRequest生活方式的对象,那么Singleton对象将在容器的整个生命周期中具有相同的PerWebRequest对象实例。 Castle不会“动态地”修改“依赖”(这没有多大意义)。一般来说,对象具有“较短”预期生活方式的依赖关系并不是一个好主意(单身人士不应该依赖于Transients或PerWebRequests)。

答案 1 :(得分:2)

很可能是一个错误。确切地说,这是应用程序代码中的错误,而不是IoC容器中的错误。

长寿命的物体不应该试图将短寿命物体作为其状态的一部分。

解决方案是完全删除依赖项,或者将依赖项从对象状态中删除。