将字符串列表或字符串数​​组传递到Unity注释构造函数(基于配置)

时间:2010-05-01 10:52:13

标签: c# xml dependency-injection unity-container

在使用XML配置时,在尝试将字符串数组传递到构造函数参数列表时,似乎无法使单位工作。

当我尝试以下操作时:

<typeConfig ...>
  <constructor ...>
    <param ... parameterType="System.String[]">
     <array>    
      <value.../>
      <value.../>
     </array>
    </param> 
  </constructor>
</typeConfig>

对于看起来像这样的c'tor:

void Foo(string[] inputParams_){ ... }

在Unity的FindConstructor(...)方法中总是失败,声明它无法找到计算String.String参数类型的c'tor

有谁知道如何成功地将一系列蜇伤传递给这种类型的c'tor?如果没有,如果c'tor接受IList,我怎么能用字符串列表呢?

谢谢!

3 个答案:

答案 0 :(得分:2)

元素'param'

不需要属性'parameterType'

这将有效:

    <constructor>
      <param name="eventsDefinitions">
        <array>
          <value value="PhaseLoss"/>
          <value value="DCRC" />
          <value value="PhaseRotation" />
        </array>
      </param>
    </constructor>

答案 1 :(得分:1)

通常我更喜欢在代码中配置Unity,所以如果配置是必须的话,我可能没那么有用。但是......

通常我会使用  注册期间的ConstructorInjector:

  

container.Configure()       .ConfigureInjectionFor(new InjectionConstructor([ value ]))

但根据: Can I pass constructor parameters to Unity's Resolve() method?

Unity 2现在还应该包括在解析期间动态地将参数传递给构造函数的功能:

  

“container.Resolve(新   ParameterOverrides {{“name”,   “bar”},{“address”,42}});“

答案 2 :(得分:0)

也许您必须完全限定类型名称:

System.String[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

如果您不在乎/不知道,可以选择删除该版本。