【发布时间】:2018-03-13 18:21:31
【问题描述】:
我有一个应用程序在启动时知道足以选择数据库并提取配置对象。
然后它在那个配置对象上执行,处理一堆东西,拉另一个配置对象,在那个配置对象上执行,等等,在一个循环中。
现在,我在应用程序的开头有一个配置根,可以配置它可以配置的所有内容。但是由于它在 db 调用之后才知道所有内容,因此该点之后的所有对象分支都隐藏在工厂工厂的后面,因此它们可以处理配置对象中发生的任何配置。
我的问题是,这正常吗?似乎另一种选择是拥有两个配置根或两个 DI 容器。一个在 db 调用之前,一个在 db 调用之后。
如果我可以在调用 db 之后执行我的 DI root,我就可以将东西直接连接到那里的容器中,从而从我的代码中删除大量工厂,这些工厂之所以存在,是因为在应用程序启动时,我'不确定需要什么。但这似乎很奇怪。这也意味着我必须在每次迭代时重新创建我的容器或第二个容器,这看起来很奇怪。
编辑:我刚刚发现 StructureMap 有一个嵌套容器功能,几乎适用于这个确切的用例,所以我肯定会在这里做一些事情:http://structuremap.github.io/the-container/nested-containers/
编辑:我没有得到任何回复,但无论如何都能在以后回答这个问题。在下面添加了我的答案。
【问题讨论】:
标签: dependency-injection architecture inversion-of-control ninject dependency-inversion