1

我與依賴注入在一個項目中使用簡單的噴油器工作,並能正常工作,直到我需要定義一個生活方式解決特定版本的依賴時,3.0.0(我用的這個版本,因爲我我正在使用visual studio 2010)。如何在Simple Injector 3.0.0版中定義DefaultScopedLifestyle?

在官方文檔,它說,我可以用這行代碼中定義的依賴的生活方式:

container.Register<IService, RealService>(Lifestyle.Scoped); 

但是,當我驗證它,它告訴我,我應該定義DefaultScopeLifestyle,使用這個(或變化):

container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); 

但在這個版本中,我找不到AsyncScopedLifestyle類或它的變化。

我該如何設置DefaultScopeLifestyle,或直接在依賴項中設置?

回答

2

的V3相當於AsyncScopedLifestyleExecutionContextScope

container.Options.DefaultScopedLifesyle = new ExecutionContextScope(); 

這種生活方式位於SimpleInjector.Extensions.ExecutionContextScoping nuget package

該軟件包要求您運行.NET 4.5或更高版本。

如果您使用的是.NET 4.0,您將不得不使用LifetimeScopeLifestyle/ThreadScopedLifestyle並同步運行您的操作,或者在您構建Web應用程序的情況下使用WebRequestLifestyle。

你可以找到更多關於LifetimeScope here和關於ThreadScopedLifestyle here的信息。

+0

要使用'new ExecutionContextScope()'我必須從nuget下載SimpleInjector.Extensions.ExecutionContextScoping包嗎?但我得到這個錯誤: 無法安裝包'SimpleInjector.Extensions.ExecutionContextScoping 3.0.0'。您正在嘗試將此軟件包安裝到以'.NETFramework,Version = v4.0'爲目標的項目中,但軟件包d不包含任何與該框架兼容的程序集引用或內容文件。 – William

+0

這些是否直接等價? – Liam

+0

我讀過它,它真的說這是一個擴展,它在nuget包中可用。所以我試圖安裝它,並得到這個錯誤。我也試着用新的ExecutionContextScope()來執行這一行,但它找不到這個類。 – William

相關問題