根據依賴倒置原則,高層模塊不依賴於低層模塊,而是依賴於抽象。所以這是一種自上而下的方法。我有一個有三層的web項目。第1層包含視圖頁面和控制器以及視圖模型。第2層是服務層,第3層是存儲庫。由於Web項目是最高級別的模塊,它包含應由Service層實現的接口,Service層包含應由存儲庫實現的接口。所以Service層具有Web項目的引用,存儲庫有服務層的引用。我正在使用autofac作爲IOC Container。由於服務層實現了web項目的接口,我需要在autofac模塊中向Service層的類註冊接口,並且需要在autofac模塊中註冊服務層的接口在庫層。據我所知,我需要在應用程序啓動時註冊autofac模塊。如果我想這樣做,我需要將服務層的引用提供給Web項目,並將存儲庫層的引用提供給服務層或Web項目。但如果我想遵循DIP的自頂向下方法,它會創建循環構建依賴。 我的問題是如何註冊autofac模塊並維護DIP?DI容器模塊註冊依賴倒置原理
編輯1: 標題問題的變化,因爲我相信這將是任何DI容器
相關:https://stackoverflow.com/questions/9501604/ioc-di-why-do-i-have-to-reference-all-layers-assemblies-in-entry-application – Steven 2015-04-04 10:54:26