我想在它具有以下架構的項目中使用簡單的注射器:簡單的注射器
- DAL層(擁有倉庫),
- BLL層(擁有服務與存儲庫交談),
- MVC層(與BLL層中的服務對話)。
當涉及向容器註冊類和接口時,我面臨一個問題,簡單注入器需要我用其接口註冊存儲庫(因爲我的服務層中的類接受存儲庫中的存儲庫他們的構造函數)
所以,實際上,簡單注入器迫使我添加一個引用到我的MVC層,我真的很喜歡避免。
我的問題是,是否有可能/正確的做一個只能容納簡單注射器的外部項目,這個項目將引用所有其他項目,這樣我就能夠註冊我想要的東西並仍然保留我的項目抽象?
還是有其他簡單方法可以解決這個問題?
[?IOC/DI - 爲什麼我要引用的所有圖層/組件的輸入應用程序]中可能重複(http://stackoverflow.com/questions/9501604/ioc-di-why-do-i-have-to-reference-all-layers-assemblies-in-entry-application) – Steven
是的,謝謝。儘管我仍然沒有完全明白它,所以我的MVC應用程序(它具有Composition Root - global.asax)應該引用所有其他項目?並通過圖表給出了答案,其他所有項目都沒有提及任何其他項目。我怎麼能不把我的BLL層引用到我的DAL層?我需要知道我在構造函數中得到的是什麼類型。或者我應該把所有接口放在一個Common項目中?再次感謝。 – jony89
你讀過第二個答案(哪個是我的)?組合根必須隱含地或明確地引用*所有其他項目;這是沒有辦法的,這是很好的,你不應該試圖阻止這一點。由於您決定將組合根和演示文稿圖層放在同一個程序集中,因此該程序集也會引用所有其他項目。但是,這並不意味着您的演示文稿*圖層*引用了所有其他圖層。 – Steven