我在Unity遇到了一个有趣的问题,感谢任何帮助。
我想在构造函数中注入一个对象数组,我希望在注入期间将每个对象与代码相关联。 请注意,可以有多个具有相同代码的对象,因此我不能使用Dictionary。
我基本上是尝试将小对象注入到包含对象中,然后包含对象将在必要时使用代码来访问这些对象。
我可以使用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。 对于第二个,只有一对:带有SmallObject3的代码01。 我知道我可以编写一个自定义类型转换器,它可以采用“01,SmallObject1”形式的字符串,并通过在代码中解析类型名称将其转换为字符串和对象。 我希望尽可能避免这种情况,并在配置中控制所有这些。
有什么想法吗?
谢谢! 菲尔