Cannot resolve Dictionary in Unity container
- by IanR
Hi,
I've just stumbled upon this:
within a Unity container, I want to register IDictionary<TK, TV>; assume that it's IDictionary<string, int>
_unityContainer = new UnityContainer()
.RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
but if I try
var d = _unityContainer.Resolve<IDictionary<string, int>>();
it fails to resolve...
I get...
Microsoft.Practices.Unity.ResolutionFailedException: Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "System.Collections.Generic.IDictionary`2[System.String,System.Int32]", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type Dictionary`2 has multiple constructors of length 2. Unable to disambiguate.
At the time of the exception, the container was:
Resolving System.Collections.Generic.Dictionary2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary2[System.String,System.Int32], (none))
--- System.InvalidOperationException: The type Dictionary`2 has multiple constructors of length 2. Unable to disambiguate..
So it looks like it has found the Type to resolve (being Dictionary<string, int>) but failed to new it up...
How come unity can't resolve this type? If I type
IDictionary<string, int> d = new Dictionary<string, int>()
that works...
any ideas?
thanks!