1

我在使用 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”形式的字符串,并通过解析代码中的类型名称将其转换为字符串和对象。如果可能的话,我希望避免这种情况,并在配置中控制所有这些。

有任何想法吗?

谢谢!菲尔

4

0 回答 0