2017-04-25 13 views
0

的情況是這樣的:我應該使用嵌套容器來爲一組依賴項分配一組服務嗎?

我有一個是通過使用DI所有方式的應用。

它有一個管理應用程序,並撥打電話到「上傳」部分」,其中有涉及20-30個班50多個頂級類。

我的問題是,我想基本上餐桌上傳部分,並且每個「CharacterizationUnit」運行一個上傳任務,我從數據庫中讀取一個未知數(少於五個)。幾乎所有的方法都需要訪問他們正在操作的CharacterizationUnit,所以我會通過它幾乎每一個方法,這似乎是愚蠢的。

在我看來,這將是好得多有參與上傳過程中每個CharacterizationUnit每個類的實例,使他們能K請將它作爲成員變量的引用來避免傳遞它。

這是否看起來像,我可能要添加每CharacterizationUnit嵌套容器的情況下,這樣我就可以註冊,並把它注射到我的所有上傳服務?一個令人討厭的事情是,我然後必須通過我的根容器的註冊的大部分有權訪問他們的孩子..

我錯過了一個更簡單/更明智的方法,比如某種方式將這些服務範圍?

主要的事情我不能確定在創造一個範圍和範圍在一起而言是搞清楚如何將CharacterizationUnit與範圍相關聯。

我也註冊了一大堆工廠到CharacterizationUnits映射到相應的服務,但使20-30的工廠通過幾乎所有各階級的依賴似乎真的很煩。

我正在使用SimpleInjector和C#。

+1

你的問題太抽象了。您應該展示一些代碼示例以使其更加具體。你在談論「分叉」,這是一個模糊的概念。 – Steven

+0

好吧,我會盡量做出簡化的例子。 – hashtable

+1

btw,Simple Injector沒有兒童或「嵌套容器」的概念,所以你應該在這方面顯示你正在做的事情。這是不被支持的一個很好的理由。嵌套容器(根據定義)允許更改/替換現有的註冊,這是[慢](https://simpleinjector.readthedocs.io/en/latest/principles.html#fast-by-default)和[危險](https: //simpleinjector.readthedocs.io/en/latest/decisions.html#container-is-locked)。 – Steven

回答

0

我相信我的答案是我應該讓每個單元都得到它自己的過程。我還沒有實現,但它似乎是最有意義的..

相關問題