2016-09-30 18 views
-4

我有一個翻譯服務,我需要公開一個屬性,我想跨我的應用程序使用。如何使用MVC6依賴注入方法

services.AddScoped<IMyTranslator, MyTranslator>(); 

我使用services.AddScoped來註冊這個接口及其實現。當我爲MyTranslator的構造函數設置一個斷點時,我可以看到這個類始終被初始化。

我無法使用AddSingleton,因爲它在所有會話中共享。我無法更改一個用戶的語言,因爲另一個用戶已經改變了一次語言。 我需要一種方法,每次會話都會初始化我的中間件。

+2

由於事情的立場你所問的問題不清楚,並且是關閉的候選人。你的問題是什麼,你有什麼問題或試圖達到什麼目的?當你說所有的時間都是初始化的時候,你的意思是每次在請求中使用接口時,這個類都被初始化了嗎?你能告訴我們你用來註冊服務的代碼嗎? – pwdst

+2

爲了產生一個可以由社區回答的問題,用清晰的語言描述問題以及你想達到的目標,以及你已經嘗試或研究過的任何東西。儘可能包含最低限度再現的代碼示例。請參閱http://stackoverflow.com/help/how-to-ask – pwdst

回答

1

services.AddScoped已經作用於用戶請求的範圍,每當用戶請求到達服務器時,就會創建一個實例來僅服務於此特定請求,而不是與其他用戶共享。

+0

是的,我知道。我的中間件不需要再次創建,我仍然可以使用第一次創建的同一個實例。是否有任何方法調用services.AddSingleSession類似的東西 –

+0

我不明白,你需要使用中間件每個會話,但同時你不希望它爲每個請求創建! –

+0

不,AddScoped現在可以工作,但實例總是相同的,那麼不必每次創建它都不是嗎?我在我的中間件上有一個名爲current language的屬性,我不能使用AddSingleton。我需要介於兩者之間。 –