我应该使用嵌套容器在依赖项的一组值上分叉一组服务吗?
Should I use nested Containers to fork a set of services over a set of values for a dependency?
情况是这样的:
我有一个应用一直在使用 DI。
它有 50 多个顶级 classes 管理应用程序并调用 "uploader" 部分”,其中涉及 20-30 classes。
我的问题是我想基本上分叉上传部分,并且 运行 每个 "CharacterizationUnit" 一个上传任务,我从数据库中读取了一个未知数量(少于五个)。几乎所有的方法都需要访问它们正在操作的 CharacterizationUnit,所以我将它传递给几乎所有方法,这看起来很愚蠢。
在我看来,在每个 CharacterizationUnit 的上传过程中包含每个 class 的实例会更好,这样他们就可以将其引用作为成员变量来避免传递它周围。
这看起来像是我想为每个 CharacterizationUnit 添加一个嵌套容器,以便我可以注册它并将其注入到我的所有上传器服务中的情况吗?一件烦人的事情是,我必须通过我的根容器的大部分注册才能在 child..
中访问它们
我是否缺少 simpler/more 明智的方法,例如以某种方式将这些服务范围界定在一起?
在创建范围并将它们一起确定范围方面,我不确定的主要事情是弄清楚如何将 CharacterizationUnit 与范围相关联。
我也可以注册一大堆工厂来将 CharacterizationUnits 映射到相应的服务,但是让 20-30 个工厂几乎通过每个 classes 依赖项似乎真的很烦人。
我正在使用 SimpleInjector 和 C#。
我认为答案是我应该让每个单元都有自己的流程。我还没有实施,但似乎最有意义..
情况是这样的:
我有一个应用一直在使用 DI。
它有 50 多个顶级 classes 管理应用程序并调用 "uploader" 部分”,其中涉及 20-30 classes。
我的问题是我想基本上分叉上传部分,并且 运行 每个 "CharacterizationUnit" 一个上传任务,我从数据库中读取了一个未知数量(少于五个)。几乎所有的方法都需要访问它们正在操作的 CharacterizationUnit,所以我将它传递给几乎所有方法,这看起来很愚蠢。
在我看来,在每个 CharacterizationUnit 的上传过程中包含每个 class 的实例会更好,这样他们就可以将其引用作为成员变量来避免传递它周围。
这看起来像是我想为每个 CharacterizationUnit 添加一个嵌套容器,以便我可以注册它并将其注入到我的所有上传器服务中的情况吗?一件烦人的事情是,我必须通过我的根容器的大部分注册才能在 child..
中访问它们我是否缺少 simpler/more 明智的方法,例如以某种方式将这些服务范围界定在一起?
在创建范围并将它们一起确定范围方面,我不确定的主要事情是弄清楚如何将 CharacterizationUnit 与范围相关联。
我也可以注册一大堆工厂来将 CharacterizationUnits 映射到相应的服务,但是让 20-30 个工厂几乎通过每个 classes 依赖项似乎真的很烦人。
我正在使用 SimpleInjector 和 C#。
我认为答案是我应该让每个单元都有自己的流程。我还没有实施,但似乎最有意义..