he tropecé con esto:No se puede resolver en un recipiente Diccionario Unidad
dentro de un contenedor Unidad, quiero registrar IDictionary<TK, TV>
; asume que es IDictionary<string, int>
_unityContainer = new UnityContainer()
.RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
pero si trato de
var d = _unityContainer.Resolve<IDictionary<string, int>>();
no resuelve ...
consigo ...
Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException: Falló la resolución de la dependencia, type = "System.Collections.Generic.IDictionary`2 [System.String, System.Int32]", name = " (ninguna)". Se produjo una excepción mientras: mientras se resolvía.
La excepción es: InvalidOperationException - El tipo Dictionary`2 tiene varios constructores de longitud 2. No se ha podido eliminar la ambigüedad.
En el momento de la excepción, el recipiente fue:
Resolución de System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary
2 [System.String, System.Int32], (ninguno)) --- > System.InvalidOperationException: el tipo Dictionary`2 tiene varios constructores de longitud 2. No se ha podido eliminar la ambigüedad ...
Parece que ha encontrado el Tipo a resolver (es decir, Dictionary<string, int>
) pero no ha podido actualizarlo ...
¿Cómo es que la unidad no puede resolver este tipo? Si escribo
IDictionary<string, int> d = new Dictionary<string, int>()
que funciona ...
alguna idea?
gracias!
gracias por el hilo y la sugerencia - Creo que tendré que escribir un contenedor no genérico para el Diccionario, que es otro nivel de complejidad que podría haber hecho sin :(- gracias de nuevo – kiwipom
sinceras disculpas por el retraso en aceptando este ... he o Acabo de hablar contigo sobre la sugerencia de InjectionConstructor, que de hecho elude el problema ... marcando como aceptado ahora - gracias :) – kiwipom