2011-07-13 144 views
2

我正在向一個類注入存儲庫,一旦我注入了存儲庫,我將分配我的上下文給每個存儲庫,所以我有我的工作單元。攔截注入

我想知道的是,有沒有辦法讓我自動將我的工作單元分配給每個存儲庫,因爲我注入它以便開發人員在設置代碼時不必考慮此問題。我已經在我的基類中配置了我的工作單元,這是開發人員將繼承的工作單元。

我可以做些什麼嗎?

Bind<I>().To<S>().WhenInjectedInto<IBaseClass>(i,b => { i.UnitOfWork = b.UnitOfWork }); 

但是不必每次重複該模式?

[更新] 我在尋找方法來找出是否Ninject被注入和從什麼到, https://github.com/ninject/ninject.extensions.interception

我想看看通過測試來看看這是爲期不遠基礎。任何建議?

+0

我已經開發了這個的所有其他部分,現在每當我向類中注入一個存儲庫時,都必須指定它的工作單元,然後可能調用它的一個方法。我想將這個注入IRepository的一個隱含部分放到IObjectIGuaranteeHasUoW中。 – Hammerstein

回答

1

我認爲更好的方法是使用構造函數注入將上下文注入到存儲庫中。在Web項目中,您可以使用InRequestScope進行上下文綁定。對於WPF/WinForms/Console應用程序,請查看Ninject.Extensions.NamedScope。您可以定義一個上下文用於您的所有依賴關係IBaseClass

+0

我把這個標記爲答案,因爲它讓我重新考慮了設計,以及我從中得到了什麼。我在給定的請求(MVC3)中使用了存儲庫,我從我的例子中無法理解看着這些存儲庫是如何從工作中獲得相同的工作單位的。因此,我的想法是我的處理程序類擁有這個功能,並將其傳遞給任何存儲庫。更改存儲庫(基類)以負責抓取自己的UoW實際上沒有什麼不同,並且所有內容都是InRequestScope。謝謝。 – Hammerstein