我看到Unity can indeed inject an array of objects。太棒了。
我想知道的是Unity保证注入的数组对象的顺序(如果有的话)?是吗:
最后,我想知道默认(未命名)组件是否仍然无法作为数组元素注入。
答案 0 :(得分:2)
元素的注册顺序。 未命名的类型将从列表中过滤掉。
我没有在文档中看到任何一种说法。这告诉我从设计的角度来看没有“保证”。因为从设计的角度来看无法保证,我认为它可能会有所变化。
按照代码......
幕后的所有注入方法都会调用IUnityContainer.ResolveAll(Type, params ResolverOverride[])
,因此所有注入方法都会产生相同的顺序。 (即构造函数注入,参数注入,直接调用ResolveAll)
ResolveAll
完成工作。订单由元素在单个容器中注册的顺序定义。
还要考虑父/子容器的情况。该命令将首先递归根容器,然后将每个子容器递归到所请求的容器。此外,如果两个容器之间存在重复的注册名称,则最多的父注册将是唯一已解决的注册名称。
这是我对source的分析。