我在使用 Unity 时遇到了一个有趣的问题,不胜感激。
我想在构造函数中注入一个对象数组,并且我想在注入期间将每个对象与一个代码相关联。请注意,可以有多个对象具有相同的代码,所以我不能有字典。
我基本上是在尝试将小对象注入到包含对象中,然后包含对象将在必要时使用代码访问这些对象。
我可以使用 KeyValuePair;如果我必须构造一个复合对象(如下所示),我也会找到。我宁愿不做的是预先单独注册代码/对象元素的所有组合。我不介意注册每个注入的对象。
我想做这样的事情(我知道这是无效的):
<register type="IMyObject" mapTo="MySmallObject1" name="SmallObject1" />
<register type="IMyObject" mapTo="MySmallObject2" name="SmallObject2" />
<register type="IMyObject" mapTo="MySmallObject3" name="SmallObject3" />
<register type="ContainingObject1" name="Name1">
<constructor>
<param name="objects">
<array>
<value>
<!-- This could resolve to a KeyValuePair or a composite object -->
<property name="Code" value = "01" />
<property name="Operation" >
<dependency name="SmallObject1" />
</property>
</value>
<value>
<property name="Code" value = "02" />
<property name="Operation" >
<dependency name="SmallObject2" />
</property>
</value>
</array>
</param>
</constructor>
</register>
<register type="ContainingObject2" name="Name2">
<constructor>
<param name="objects">
<array>
<value>
<property name="Code" value = "01" />
<property name="Operation" >
<dependency name="SmallObject3" />
</property>
</value>
</array>
</param>
</constructor>
</register>
所以在第一个包含的对象中,我注入了两对:代码 01 与 SmallObject1,代码 02 与 SmallObject2。第二,只有一对:代码 01 和 SmallObject3。我知道我可以编写一个自定义类型转换器,它可以采用“01,SmallObject1”形式的字符串,并通过解析代码中的类型名称将其转换为字符串和对象。如果可能的话,我希望避免这种情况,并在配置中控制所有这些。
有任何想法吗?
谢谢!菲尔