2010-05-01 4 views
2

Je n'arrive pas à faire fonctionner l'unité lorsque j'essaie de transmettre un tableau de chaînes dans une liste de paramètres constructeur, en utilisant la configuration XML.Passage d'une liste de chaînes ou d'un tableau de chaînes dans Unity Injection Constructor (Config-based)

Quand je effectuez les opérations suivantes:

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

pour une c'tor qui ressemble à ceci: méthode

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

Il échoue toujours FindConstructor (...) de l'unité indiquant qu'il ne peut pas trouver un c'tor mathématiquement le type de paramètre de String.String

Est-ce que quelqu'un sait comment passer un tableau de piqûres avec succès dans ce type de c'tor? Si non, comment puis-je le faire avec une liste de chaînes, si le c'tor devait accepter un IList?

Merci!

Répondre

0

Peut-être que vous devrez saisir le nom complet du type:

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

En option, vous pouvez déposer la version si vous ne faites pas/savoir.

+0

hmm, pas sûr va essayer, mais ne marche pas besoin System.string qualification ailleurs. – miguel

1

Généralement, je préfère configurer Unity dans le code, donc je ne suis pas très utile si la configuration est un must. Mais ....

Généralement j'utiliser un ConstructorInjector lors de l'inscription:

container.Configure() .ConfigureInjectionFor (nouvelle InjectionConstructor ([valeur]))

Mais selon: Can I pass constructor parameters to Unity's Resolve() method?

L'unité 2 devrait maintenant également inclure le abili ty passer des paramètres dans le constructeur de façon dynamique lors de la résolution:

"container.Resolve (nouveau ParameterOverrides {{ "name", "bar"}, { "adresse", 42}});"

+0

merci, mais les questions sont * spécifiquement * sur les fichiers de configuration – miguel

+0

Pas de soucis. Un autre essai sans valeur est - j'ai vu la notation "'1" pointillé autour de la configuration de texte, quelque chose comme "String'1" habituellement en se référant à une sorte de collection générique. – Doobi

+0

oui, '1 ou' 2 indiquent le nombre de paramètres génériques. – miguel

2

Vous n'avez pas besoin de l'attribut 'parameterType' pour l'élément 'param'

Cela fonctionne:

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