Ho appena imbattuto in questo:Impossibile risolvere dizionario nel container Unità
all'interno di un contenitore Unità, Vorrei iscrivermi IDictionary<TK, TV>
; supporre che si tratta di IDictionary<string, int>
_unityContainer = new UnityContainer()
.RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
ma se provo
var d = _unityContainer.Resolve<IDictionary<string, int>>();
non riesce a risolvere ...
ricevo ...
Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException: risoluzione della dipendenza non riuscita, type = "System.Collections.Generic.IDictionary`2 [System.String, System.Int32]", name = " (nessuna)". Si è verificata un'eccezione mentre: durante la risoluzione.
L'eccezione è: InvalidOperationException - Il tipo Dizionario`2 ha più costruttori di lunghezza 2. Impossibile disambiguare.
Al momento del l'eccezione, il contenitore è stato:
Risoluzione System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary
2 [System.String, System.Int32], (none)) --- > System.InvalidOperationException: Il tipo Dizionario`2 ha più costruttori di lunghezza 2. Impossibile disambiguare ..
Quindi sembra che abbia trovato il Tipo da risolvere (essendo Dictionary<string, int>
) ma non è riuscito a farlo ...
Come mai l'unità non può risolvere questo tipo? Se scriv
IDictionary<string, int> d = new Dictionary<string, int>()
che funziona ...
tutte le idee?
grazie!
grazie per il thread e il suggerimento - credo che avrò bisogno di scrivere un wrapper non generico per il dizionario, che è solo un altro livello di complessità che avrei potuto fare senza :(- grazie ancora – kiwipom
scuse sincere per il ritardo su accettando questo ... ho o appena raggiunto con te sul suggerimento di InjectionConstructor, che in effetti aggira il problema ... contrassegnando come accettato ora - grazie :) – kiwipom