在使用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,我怎么能用字符串列表呢?
谢谢!
答案 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
如果您不在乎/不知道,可以选择删除该版本。