我對構造函數注入模式和規則Don’t call the container; it’ll call you有點困惑。構造函數注入 - 在哪裏調用?
有人可以解釋我(也可能是其他人)真正的應用程序應該如何使用構造函數注入派生所有DI優勢?我給出的是一些簡單的,我認爲普通的例子:
DomainObject
RepositoryObject
DaoObject
的關係是顯而易見的(我認爲) - RepositoryObject需要DaoObject,domainObject的需要存儲庫。
使用構造函數注入我假設我可以忘記(在大多數情況下)關於NEW關鍵字,但是何時,何地以及如何創建新對象(主要是域)?我必須爲所有班級編寫工廠?我應該在該工廠參考DI容器嗎?
當有人向我展示一些真正的應用程序示例(請不要Asp.Net MVC :))或草圖一些項目結構時最好。
看到這個答案:http://stackoverflow.com/questions/6277771/what-is-a-composition-root-in-the-context-of-dependency-injection/6277806#6277806 –
@Mark - 好的,我認爲我掌握了這一點,但是我在創建域對象方面遇到了一些問題。讓我們假設我已經創建了控制器對象(Global.asax作爲應用程序的根目錄),現在我有一些操作(post),並且必須在這一點創建,讓我們說 - 新的Book和Book需要一些依賴的c(Repository或者東西)。那麼如何創建這個新對象呢?我應該總是向Controller對象提供該依賴項,儘管其中一些僅用於創建「Book」對象? Repositorys(他們的一些方法創建新的域對象)也是如此。 – mgibas
http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-object/4836790#4836790 –