2012-11-28 20 views
2

如果在每個請求中創建了具有生活方式PerWebRequest的對象,我沒有在文檔中找到任何引用。有生活方式的對象PerWebRequest in Singleton

對我來說,似乎當PerWebRequest對象在Singleton中解析時,它將被本地存儲到Singleton對象,並且它不再充當PerWebRequest對象。

它是錯誤還是功能?

回答

3

您能否澄清一下您的意思是「生活方式PerWebRequest在Singleton中的對象」?如果你的意思是你有一個Singleton對象,它依賴於一個帶有PerWebRequest生活方式的對象,那麼Singleton對象將在容器的整個生命週期內具有相同的PerWebRequest對象實例。 Castle不會「動態地」修改「依賴」(這沒有多大意義)。一般來說,對於一個對象具有「短」意向生活方式的依賴並不是一個好主意(單例不應該依賴瞬態或PerWebRequests)。

2

這很可能是一個錯誤。確切地說,這是應用程序代碼中的一個錯誤,而不是IoC容器中的錯誤。

長壽命對象不應該嘗試將短壽命對象作爲其狀態的一部分。

解決方法是完全刪除依賴項,或者刪除依賴項以成爲對象狀態的一部分。

+0

這種情況是單例服務持有的是PerWebRequest的DbContextManager。這是否意味着我應該使服務作爲PerWebRequest呢? – maxlego

+0

可能。如果它是有道理的。這是可用選項之一。 –

相關問題