2010-04-29 27 views
9

Sadece bu tökezledi ettik o IDictionary<string, int>Birlik kapta Sözlük çözülemiyor

_unityContainer = new UnityContainer() 
    .RegisterType<IDictionary<string, int>, Dictionary<string, int>>(); 

olduğunu varsayalım ama

var d = _unityContainer.Resolve<IDictionary<string, int>>(); 
o çözmek için başarısız

... Ben olsun

... çalışırsanız

Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException: Bağımlılık çözümlemesi başarısız oldu, type = "System.Collections.Generic.IDictionary`2 [System.String, System.Int32]", name = " (Yok)". İstisna şu durumlarda meydana geldi: çözümlenirken.

Özel durum: InvalidOperationException - Dictionary`2 türünde uzunluk 2'nin birden fazla kurucusu vardır. Netleştirilemiyor.


istisna zamanda

kap oldu:

çözme System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary 2 [System.string, System.ınt32], (yok)) --- System.InvalidOperationException: Dictionary`2 türü 2 uzunluğuna sahip birden fazla kurucuya sahiptir. Disambiguate ..

Bu yüzden bu sorunu gidermek için (Dictionary<string, int> olmak üzere) buldu, ancak yeni bir hata ...

Birlik bu türü nasıl çözemez? Ben çalışan

IDictionary<string, int> d = new Dictionary<string, int>() 

...

herhangi bir fikir yazarsanız?

Teşekkürler!

cevap

9

Çok ilginç bulabilirsiniz +1. Birlik içinde bir böcek gibi görünüyor, buraya bakın:

http://unity.codeplex.com/Thread/View.aspx?ThreadId=30292

Ayrıca bu deneyebilirsiniz: böylelikle sorunu engellemeyi, varsayılan kurucusunu kullanmak yapar

container.RegisterType<IDictionary<int, string>, Dictionary<int, string>> 
       (new InjectionConstructor()); 

...

+0

iş parçacığı ve öneri için teşekkürler - Ben sanırım ben yapamamış karmaşıklık başka bir düzeyde olan Sözlük için bir non-generic sarıcı yazmak gerekir :(- tekrar teşekkürler – kiwipom

+0

gecikme için samimi özür dilerim bunu kabul ediyorum ... Neyse, sadece şu anda konuyu ele geçiren InjectionConstructor öneri konusunda yanınızda kaldınız ... şimdi kabul edildi olarak işaretlemek - teşekkürler :) – kiwipom