J'ai besoin d'injecter une collection de type IList<IActivity>
dans un constructeur. J'utilise Unity 2.0 et je le configure en utilisant XML.Comment injecter un IList générique <> d'objets en utilisant Unity 2 XML config?
J'ai été capable de le faire en injectant simplement un tableau dans Unity 1.2. Je viens de passer à Unity 2.0 et ma configuration a cessé de fonctionner dans ce domaine spécifique. (. J'ai résolu tous les changements insignifiants au schéma)
Mon constructeur ressemble à ceci:
public DoSomethingWorkflow(IList<IActivity> activityCollection)
{
...
}
Ma config ressemble à ceci:
<alias alias="IListOfIActivity" type="System.Collections.Generic.IList`1[[MyProject.IActivity, MyProject]], mscorlib"/>
<alias alias="IActivityArray" type="MyProject.IActivity[], MyProject" />
<register type="IWorkflow" mapTo="Workflow" name="DoSomethingWorkflow">
<constructor>
<param name="activityCollection" type="IListOfIActivity">
<array>
<dependency name="DoSomethingActivity1"/>
<dependency name="DoSomethingActivity2"/>
</array>
</param>
</constructor>
</register>
Si je lance la config comme ci-dessus Je reçois un message d'erreur indiquant "La configuration est définie pour injecter un tableau, mais le type IList`1 n'est pas un type de tableau".
Si je change à la façon dont il l'habitude de travailler (injecter l'alias de type IActivityArray) Je reçois un message d'erreur indiquant "configuration est incorrect, le MyProject.Workflow type ne dispose pas d'un constructeur qui prend des paramètres nommés ActivityCollection ".
Si je supprime complètement l'attribut type de l'élément constructeur, j'obtiens le même message d'erreur que ci-dessus. La seule façon que je peux faire fonctionner ceci est de changer le constructeur pour accepter un tableau IActivity [] à la place.
Donc, est-ce un bug dans Unity, car un tableau est un IList et devrait trouver le constructeur? Ou ai-je oublié quelque chose dans ma config?
Grande , Je viens d'avoir un badge Tumbleweed pour celui-ci! Quelqu'un peut-il aider? – freshr
Avez-vous déjà découvert cela? –