2

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

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

它是错误还是功能?

4

2 回答 2

3

您能否澄清一下“单例中具有生活方式 PerWebRequest 的对象”是什么意思?如果您的意思是您有一个具有 Singleton 生活方式的对象依赖于具有 PerWebRequest 生活方式的对象,那么 Singleton 对象将在容器的整个生命周期内具有相同的 PerWebRequest 对象实例。Castle 不会“即时”“修改”依赖项(这没有多大意义)。通常,对象具有“较短”预期生活方式的依赖关系并不是一个好主意(单例不应该依赖于瞬态或 PerWebRequest)。

于 2012-11-28T16:33:40.670 回答
2

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

长寿命对象不应试图将短寿命对象作为其状态的一部分。

解决方案是要么完全删除依赖关系,要么将依赖关系从对象状态的一部分中删除。

于 2012-11-28T21:13:22.300 回答