Ich habe stolperte über dieses:Kann nicht lösen Wörterbuch in Unity Container
innerhalb einer Einheit Container, ich will IDictionary<TK, TV>
registrieren; davon ausgehen, dass es IDictionary<string, int>
_unityContainer = new UnityContainer()
.RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
ist, aber wenn ich versuche,
var d = _unityContainer.Resolve<IDictionary<string, int>>();
es zu lösen schlägt fehl ...
ich ...
Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException: Auflösung der Abhängigkeit fehlgeschlagen, type = "System.Collections.Generic.IDictionary`2 [System.String, System.Int32]", name = " (keiner)". Ausnahme aufgetreten während: während der Auflösung.
Ausnahme ist: InvalidOperationException - Der Typ Dictionary `2 hat mehrere Konstruktoren der Länge 2. Kann nicht disambiguate.
Zum Zeitpunkt der Ausnahme, war der Behälter:
Resolving System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary
2 [System.String, System.Int32], (none)) --- > System.InvalidOperationException: Der Typ Dictionary `2 hat mehrere Konstruktoren der Länge 2.
So sieht es aus, als hätte es den Typ gefunden zu lösen (Dictionary<string, int>
zu sein) aber es versäumt, es neu zu erstellen ...
Wie kann Einheit diesen Typ nicht lösen? Wenn ich tippe
IDictionary<string, int> d = new Dictionary<string, int>()
, das funktioniert ...
irgendwelche Ideen?
danke!
Danke für den Thread und den Vorschlag - Ich denke, ich muss einen nicht-generischen Wrapper für das Dictionary schreiben, was nur eine weitere Ebene der Komplexität ist, auf die ich hätte verzichten können :(- nochmals vielen Dank – kiwipom
aufrichtige Entschuldigung für die Verzögerung akzeptiere dieses ... Ich habe o Ich habe Sie gerade über den InjectionConstructor-Vorschlag eingeholt, der das Problem tatsächlich umgeht ... Markierung als akzeptiert - danke :) – kiwipom