【发布时间】:2017-04-05 13:53:23
【问题描述】:
我正在将 Unity 用于 IoC,并且我希望遵循 How not to do dependency injection 中列出的原则。所以没有全局可用的容器,代码中没有mContainer.Resolve<Type>(),而是构造函数注入。
我的问题是将这些原则应用于多个容器。我的应用程序比较了许多产品(遵循共享模型的对象),每个产品都由它自己的容器配置。
我正在寻找一种方法,让每个“产品”(可以被视为具有许多子对象的对象)使用它自己的容器而不指定该容器。这些容器可以是子容器或命名容器,我认为这没有什么区别?
我已经研究过统一扩展,但还没有找到答案。
【问题讨论】:
-
每个对象都有不同的容器?我确定我误解了一些东西,但你能澄清一下吗?
-
我不想要 每个 对象的容器。但是,我有多个“产品”(派生自同一类层次结构但由于其特定细节而表现不同的对象)。每个产品都应该使用它自己的容器来注册它自己的派生类。
-
好吧,我可以理解出于性能原因拥有多个容器,也许,但是一旦你在来自两个不同容器的两个实体之间建立了链接,恕我直言,你不会玩得很开心。对于同一个基类/抽象类的不同实现,我肯定会使用命名注册,或者在某些情况下使用工厂,如果正确的分辨率只在运行时知道。
标签: unity-container