我剛剛在這個偶然假設它是IDictionary<string, int>
在Unity容器無法解析字典
_unityContainer = new UnityContainer()
.RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
但如果我嘗試
var d = _unityContainer.Resolve<IDictionary<string, int>>();
它未能解決......
我得到...
Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException:解析依賴失敗,type =「System.Collections.Generic.IDictionary`2 [System.String,System.Int32]」,name =「 (沒有)」。 發生異常時:解析時。
異常是:InvalidOperationException - 類型Dictionary`2具有長度爲2的多個構造函數。無法消除歧義。
在異常時,該容器是:
解決System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary
2 [System.String,System.Int32],(無)) --- > System.InvalidOperationException:類型字典`2有多個構造函數的長度爲2.無法消除歧義..
因此,它看起來像它已找到要解析的類型(正在Dictionary<string, int>
),但未能新增它...
團結如何解決這種問題?如果鍵入
IDictionary<string, int> d = new Dictionary<string, int>()
的作品......
什麼想法?
謝謝!
謝謝你的線程和建議 - 我想我需要爲字典編寫一個非通用的包裝,這只是另一個級別的複雜性,我可以沒有:( - 再次感謝 – kiwipom 2010-04-29 01:32:02
誠摯的歉意,延遲接受這一個...我已經o了只是剛剛趕上了你對InjectionConstructor的建議,這確實繞過了這個問題......現在標記爲接受 - 謝謝:) – kiwipom 2010-06-11 10:30:01