gpt4 book ai didi

c# - 无法解析 Unity 容器中的字典

转载 作者:可可西里 更新时间:2023-11-01 08:45:48 24 4
gpt4 key购买 nike

我刚刚偶然发现了这个:

在 Unity 容器中,我想注册 IDictionary<TK, TV> ;假设它是 IDictionary<string, int>

_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], (none)) ---> System.InvalidOperationException: 类型 Dictionary`2 有多个长度为 2 的构造函数。无法消除歧义..

所以看起来它已经找到了要解析的类型(即 Dictionary<string, int> )但未能将其更新...

unity怎么不能解决这个类型呢?如果我输入

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

有效...

有什么想法吗?

谢谢!

最佳答案

非常有趣的发现 +1。似乎是 Unity 中的错误,请参见此处:

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

你也可以试试这个:

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

这使得它使用默认构造函数,从而规避了这个问题......

关于c# - 无法解析 Unity 容器中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2733936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com