0

我看到Unity 确实可以注入对象数组。极好的。

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

  • 数组元素的注册顺序?
  • 具体注册类型名称的字母顺序?
  • 注册命名组件的字母顺序?
  • ...或者它是一个未定义的订单?

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

4

1 回答 1

2

简答

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

长答案

我在文档中没有看到任何地方说一种或另一种方式。这告诉我,从设计的角度来看,没有“保证”。因为从设计的角度来看没有保证,我认为它可能会发生变化。

按照代码...

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

ResolveAll做这项工作。顺序由元素在单个容器中注册的顺序定义。

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

这是我自己分析的来源

于 2013-08-30T02:39:37.453 回答