Unity阵列注入 - 命令是什么?

时间:2013-08-29 19:17:43

标签: .net dependency-injection unity-container

我看到Unity can indeed inject an array of objects。太棒了。

我想知道的是Unity保证注入的数组对象的顺序(如果有的话)?是吗:

  • 数组元素的注册顺序?
  • 具体注册类型名称的字母顺序?
  • 已注册的名为组件的字母顺序?
  • ...还是未定义的订单?

最后,我想知道默认(未命名)组件是否仍然无法作为数组元素注入。

1 个答案:

答案 0 :(得分:2)

简答

元素的注册顺序。 未命名的类型将从列表中过滤掉。

长答案

我没有在文档中看到任何一种说法。这告诉我从设计的角度来看没有“保证”。因为从设计的角度来看无法保证,我认为它可能会有所变化。

按照代码......

幕后的所有注入方法都会调用IUnityContainer.ResolveAll(Type, params ResolverOverride[]),因此所有注入方法都会产生相同的顺序。 (即构造函数注入,参数注入,直接调用ResolveAll)

ResolveAll完成工作。订单由元素在单个容器中注册的顺序定义。

还要考虑父/子容器的情况。该命令将首先递归根容器,然后将每个子容器递归到所请求的容器。此外,如果两个容器之间存在重复的注册名称,则最多的父注册将是唯一已解决的注册名称。

这是我对source的分析。