2017-04-25 16 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

我相信我的答案是我应该让每个单元都得到它自己的过程。我还没有实现,但它似乎是最有意义的..

相关问题