我們已經創建了一個單獨的對象(SsoSettingsProvider)中,我們與生活方式注入對象PerWebRequest(IReservationService在我們的例子是WCF客戶端),溫莎城堡PerWebRequest對象。在構造函數中,我們使用這個對象來獲取一些數據,並將這些數據放在一個專用字段中。在Singleton對象沒有注入引用它在現場
public class SsoSettingsProvider : ISsoSettingsProvider
{
readonly LogonSettings _logonSettings;
public SsoSettingsProvider(IReservationService reservationService)
{
_logonSettings = reservationService.GetSSOSettings();
}
}
如果我們看一下可能的生活方式不匹配在溫莎城堡,它說:
「組件‘SsoSettingsProvider/ISsoSettingsProvider’生活方式 辛格爾頓與生活方式 取決於‘後期綁定IReservationService’PerWebRequest這種通常不需要依賴項,並且可能會導致各種類型的錯誤。「
這個信息說有唯一的可能性,但在這種情況下,我認爲這不是一個問題,因爲注入的對象並不在現場引用,因此它可以被垃圾收集。我對嗎 ?
請閱讀[本文](http://blog.ploeh.dk/2014/06/02/captive-dependency/)以瞭解問題。 – Steven
感謝您的文章。我意識到這種行爲,但情況並非如此。將文章映射到我的情況,我們應該在'SsoSettingsProvider'的字段中引用'IReservationService'。在我的例子中它使用了一次。 – RedgoodBreaker
而[本文](http://blog.ploeh.dk/2011/03/03/InjectionConstructorsshouldbesimple/)也適用於您的情況。 – Steven