我看到Unity 确实可以注入对象数组。极好的。
我想知道的是 Unity 对注入的数组对象的顺序有什么保证(如果有的话)?是吗:
- 数组元素的注册顺序?
- 具体注册类型名称的字母顺序?
- 注册命名组件的字母顺序?
- ...或者它是一个未定义的订单?
最后,我想知道默认(未命名)组件仍然不能作为数组元素注入是否仍然正确。
我看到Unity 确实可以注入对象数组。极好的。
我想知道的是 Unity 对注入的数组对象的顺序有什么保证(如果有的话)?是吗:
最后,我想知道默认(未命名)组件仍然不能作为数组元素注入是否仍然正确。
元素注册的顺序。未命名的类型将从列表中过滤掉。
我在文档中没有看到任何地方说一种或另一种方式。这告诉我,从设计的角度来看,没有“保证”。因为从设计的角度来看没有保证,我认为它可能会发生变化。
按照代码...
所有的注入方法都在后台调用IUnityContainer.ResolveAll(Type, params ResolverOverride[])
,所以所有的注入方法都会产生相同的顺序。(即构造函数注入、参数注入、直接调用ResolveAll)
ResolveAll
做这项工作。顺序由元素在单个容器中注册的顺序定义。
还要考虑父/子容器的情况。该顺序将递归地首先是根容器,然后是每个子容器,直到请求的容器。此外,如果两个容器之间存在重复的注册名称,则最顶层的父注册将是唯一解决的。
这是我自己分析的来源。