想象一下,您有一个包含数百个类的应用程序,这些类实现了数十个“高级”接口(即组件级)。是否有推荐的依赖注入方式(如统一)。是否应该有一个可用于引导的“通用容器”,可以作为单例访问?是否应该传递一个容器,所有实例都可以RegisterInstance?一切都应该由 RegisterType 在启动时的某个地方完成吗?如何在需要时使容器可访问。构造函数注入似乎是错误的,与标准方式存在争议,您必须将接口从组件级别传递到在启动时使用它的最底层,或者引用以“知道你住在哪里”反模式结束. 并且:拥有一个“可用”的容器 可能会让开发人员想到在客户端上下文中解析服务器组件。如何避免?
欢迎任何讨论!
编辑澄清
我想出了一个有点现实的例子,以便更好地了解我看到的问题。
让我们想象一下该应用程序是一个高保真系统。该系统有 cd 播放器(集成在 cd 机架中)和一个 USB 端口(集成在 USB 机架中)来播放音乐。
现在,CD 播放器和 USB 端口应该可以播放 mp3 音乐了。
我在某个地方有一个 mp3 解码器,它是可注入的。
现在我启动高保真系统。还没有插入 CD,也没有插入 USB 棒。我现在不需要 mp3 解码器。
但是通过构造函数注入,我必须已经将依赖项注入到 cd 机架和 USB 机架中。
如果我从不插入 mp3 cd 或 mp3 usb 棒怎么办?
我应该在 cd 架上放一个参考,所以当插入 mp3 cd 时,我手头有一个解码器吗?(对我来说似乎错了)
cd 机架的子系统需要解码器,该子系统仅在插入 mp3 时启动。现在我在 cd 机架中没有容器,这里的构造函数注入呢?