2010-05-01 24 views
2

当我尝试在使用XML配置时尝试将字符串数组传递到构造函数参数列表中时,我似乎无法获得统一的工作。将字符串或字符串数​​组传递到Unity注入构造函数中(基于配置)

当我尝试以下方法:

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

的c'tor它看起来像这样:

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

它总是在Unity的FindConstructor(...)方法,说明失败,它不能找到一个c'tor mathcing参数类型的String.String

有谁知道如何将一串刺激成功地传递到这种类型的c'tor?如果不是,如果c'tor要接受IList,我该如何使用字符串列表来做到这一点?

谢谢!

回答

0

也许你将不得不完全限定的类型名称:

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

您可以随意地丢弃版本,如果你不在乎/知道。

+0

嗯,不知道会尝试,但system.string犯规要求其他地方的资格 – miguel 2010-05-01 11:04:17

1

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

container.Configure() .ConfigureInjectionFor(新InjectionConstructor([]))

:但....

通常我在注册期间使用 ConstructorInjector

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

Unity 2现在应该还包括阿比利TY到解析期间参数传递到构造函数动态:

“container.Resolve(新 ParameterOverrides {{ ”姓名“, ”酒吧“},{ ”地址“,42}});”

+0

谢谢,但问题是*特别*关于configuratin文件 – miguel 2010-05-01 15:16:40

+0

无后顾之忧。另一个毫无价值的尝试是 - 我已经看到文本配置周围散布的符号“1”,通常指的是某种泛型集合时的“String'1”。 – Doobi 2010-05-02 14:35:48

+0

是,'1或'2表示通用参数的数量。 – miguel 2010-05-03 15:02:37

2

你不需要的元素“PARAM”

属性“参数类型”这将工作:

<constructor> 
     <param name="eventsDefinitions"> 
     <array> 
      <value value="PhaseLoss"/> 
      <value value="DCRC" /> 
      <value value="PhaseRotation" /> 
     </array> 
     </param> 
    </constructor> 
相关问题