如果在每个请求中创建了具有 Singleton 生活方式 PerWebRequest 的对象,我在文档中没有找到任何参考。
对我来说,似乎当 PerWebRequest 对象在 Singleton 中解析时,它将在本地存储到 Singleton 对象,并且不再充当 PerWebRequest 对象。
它是错误还是功能?
如果在每个请求中创建了具有 Singleton 生活方式 PerWebRequest 的对象,我在文档中没有找到任何参考。
对我来说,似乎当 PerWebRequest 对象在 Singleton 中解析时,它将在本地存储到 Singleton 对象,并且不再充当 PerWebRequest 对象。
它是错误还是功能?
您能否澄清一下“单例中具有生活方式 PerWebRequest 的对象”是什么意思?如果您的意思是您有一个具有 Singleton 生活方式的对象依赖于具有 PerWebRequest 生活方式的对象,那么 Singleton 对象将在容器的整个生命周期内具有相同的 PerWebRequest 对象实例。Castle 不会“即时”“修改”依赖项(这没有多大意义)。通常,对象具有“较短”预期生活方式的依赖关系并不是一个好主意(单例不应该依赖于瞬态或 PerWebRequest)。
很可能这是一个错误。准确地说,这是应用程序代码中的错误,而不是 IoC 容器中的错误。
长寿命对象不应试图将短寿命对象作为其状态的一部分。
解决方案是要么完全删除依赖关系,要么将依赖关系从对象状态的一部分中删除。