Je viens de tombé sur ce:Impossible de résoudre le Dictionnaire dans le récipient unité
dans un conteneur de l'unité, je veux enregistrer IDictionary<TK, TV>
; supposons que c'est IDictionary<string, int>
_unityContainer = new UnityContainer()
.RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
mais si je tente
var d = _unityContainer.Resolve<IDictionary<string, int>>();
il ne parvient pas à résoudre ...
Je reçois ...
Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException: La résolution de la dépendance a échoué, type = "System.Collections.Generic.IDictionary`2 [System.String, System.Int32]", name = " (aucun)". Une exception est survenue pendant la résolution. L'exception est: InvalidOperationException - Le type Dictionary`2 a plusieurs constructeurs de longueur 2. Impossible de désambiguïser.
Au moment de l'exception, le récipient était de:
Résolution System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary
2 [System.String, System.Int32], (none)) --- > System.InvalidOperationException: Le type Dictionary`2 a plusieurs constructeurs de longueur 2. Impossible de désambiguïser.
Donc, il semble qu'il a trouvé le type à résoudre (étant Dictionary<string, int>
), mais il a échoué ...
Comment l'unité ne peut-elle pas résoudre ce type? Si je tape
IDictionary<string, int> d = new Dictionary<string, int>()
qui fonctionne ...
des idées?
merci!
merci pour le fil et la suggestion - je suppose que je vais devoir écrire un wrapper non générique pour le dictionnaire, qui est juste un autre niveau de complexité que je pourrais avoir fait sans :(- merci encore – kiwipom
sincères excuses pour le retard sur acceptant celui-ci ... j'ai nly juste rattrapé avec vous sur la suggestion InjectionConstructor, ce qui contourne effectivement le problème ... marquage comme accepté maintenant - merci :) – kiwipom