回答
每個子系統都有一個模塊。當然,什麼是分類爲「子系統」的定義取決於...
在某些情況下,由於較低級別的子系統/組件無法處理做出最後的權威性決定 - 在某些情況下,這可以通過將參數傳遞到模塊來實現。
在使用NInject幾年後回覆我自己的帖子。
這是我如何安排我的NInjectModules,使用書店爲例:
- BookStoreSolution
- Domain.csproj
- Services.csproj
- CustomerServicesInjectionModule.cs
- PaymentProcessingInjectionModule.cs
- DataAccess.csproj
- CustomerDatabaseInjectionModule.cs
- BookDatabaseInjectionModule.cs
- CustomSecurityFramework.csproj
- CustomSecurityFrameworkInjectionModule.cs
- PublicWebsite.csproj
-
個
- PublicWebsiteInjectionModule.cs
- Intranet.csproj
- IntranetInjectionModule.cs
這是什麼要說的是,系統中的每個項目都帶有一種或多種預包裝NInject模塊,知道如何爲該項目的類設置綁定。
大多數情況下,單個應用程序不希望對項目提供的默認注入模塊進行重大更改。例如,如果我正在創建一個需要導入DataAccess項目的小型WinForm應用程序,通常我也希望將所有項目的Repository <>類綁定到其關聯的IRepository接口。
與此同時,沒有任何東西強制單個應用程序使用特定的注射模塊。應用程序可以創建自己的注入模塊,並忽略它正在導入的項目提供的默認模塊。通過這種方式,系統仍然保持靈活性和解耦。
所以......這意味着你必須在每個具有模塊的項目中包含一個Ninject包/參考?我希望在我的調用者程序集(例如,Web項目)中有一個地方註冊我需要的每個服務,然後只有該程序集將直接引用Ninject。思考? – 2012-05-17 17:04:53
是的,這是該設置的缺點。然而,除非你有一個從不使用屬性注入或使用Kernel.Get <>()的非常純粹的應用程序,否則我通常最終會得到一個NInject引用。 – cbp 2012-05-18 02:35:43
好吧......我剛剛完成了一個使用Unity for DI的項目,並且我在web項目的引導程序中結束了一個很長的RegisterServices方法。沒有一個我的類庫項目直接依賴Unity或EntLib。他們都利用構造函數注入。我認爲這很好。 – 2012-05-21 14:17:38
- 1. 你如何組織你的Javascript代碼?
- 2. 你如何組織你的git倉庫?
- 3. 你如何組織你的Backbone文件?
- 4. 你如何組織你的代碼?
- 5. 你如何組織你的ATG項目?
- 6. 你如何組織你的模型代碼在asp.net-MVC?
- 7. C#,Ninject:你把內核和你的模塊放在哪裏?
- 8. 你如何管理和組織你的遊戲組件?
- 9. Ninject模塊或組織接線,依賴
- 10. 你如何組織你的包在Symfony2的項目?
- 11. 你如何在你的rails項目中組織靜態頁面?
- 12. 你如何命名和組織你的例外?
- 13. 你如何組織你的開發環境
- 14. 你如何組織你的發佈測試?
- 15. 你如何組織你的MVC控制器測試?
- 16. 你如何組織你的共享點發展?
- 17. UnitTest你如何組織你的測試文件?
- 18. 你如何組織你的測試項目
- 19. 你如何在php中組織你的頁面?
- 20. 你如何在你的項目中組織CSS?
- 21. 你如何在TDD中組織你的單元測試?
- 22. Web代碼重用,你如何組織你的腳本片段?
- 23. 你如何管理和組織你的存儲過程?
- 24. 你如何保持你的支持領域有組織? (樣式/模式)
- 25. 你如何在Riak組織水桶?
- 26. 你將如何組織我們面臨
- 27. 你如何組織異常定義?
- 28. 如何組織Perl模塊
- 29. 你如何管理你的自定義模塊?
- 30. 你如何保持你的WPF資源在大型項目上組織?
好問題。我希望看到更多的討論,因爲我分享你的擔憂。每個子系統有一個模塊聽起來合理,但我也有模塊用於單元測試的不同連接依賴關係。 – JulianM 2009-11-18 03:38:37