組成的根在我的第一個問題摘要一個可重用的庫
Locate the correct composition root for a .NET library
幫助澄清有關依賴性注入。 Steven的詳盡答案(用幾句話表示,如果可能的話)表示可重複使用的庫是一個特例,這裏我們可以使用poor-man-injection
(查看完整性的答案)。
研究AutoFixture的源代碼,你可以注意到主程序集在任何地方都使用DI而不依賴於容器;在Mark Seemann書中得到了很好的解釋。
現在的問題是:有人可以引入一種模式(或良好的做法)來抽象組成的根,而不使用容器?
附加說明(可選):
背襯AutoFixture其中該組合物在根Fixture
類型構造發生;我認爲*Relays
類用於以類似的方式對實例進行分組,一些DI庫具有模塊的概念。 有趣的是,有一種名爲BehaviourRoot
的類型位於圖的頂部(這是我正在尋找的抽象類型?)。
+1和這個答案。不知道是否有點題外話,也許繼續讀這本書,我可以得到答案:但我試着問。一個例子:我有一個像'Fixture'一樣的Facade,它提供了一個消費類型專用於可重用庫的服務。所有類型都通過構造函數注入來使用DI。在某些時候(我認爲在Facade ctor中)應該創建圖表。如果這不是組成的根,如何調用它?如果這種處理方式是正確的,你可以提供一個評論嗎? (例如使用適當的圖案或指示...) – jay 2013-03-14 08:03:50
插件怎麼樣?插件是否可以有組合根?該插件具有它需要管理的依賴關係,而與其託管的應用程序無關。 – Philippe 2013-09-13 16:10:27
一個好的插件會遵循OCP,所以雖然它可能具有依賴關係,但這些依賴關係可能不必捆綁在插件本身中,但可以從其他插件中導入。這就是管理可擴展性框架(作爲示例)明確建模*進口*和*出口*的原因。因此,如果插件具有其自己的組合根,它將打破OCP。如果設計得當,所有庫都是插件,所以上面的答案仍然成立。 – 2013-09-14 08:24:17