我用Unity注册一个实例:
ContentSlideControlsEntity contentSlideControlsEntity = new ContentSlideControlsEntity(new Queue<uint>());
container.RegisterInstance(typeof(ContentSlideControlsEntity), "contentSlideControlsEntity", contentSlideControlsEntity);
然后我只是想重新开始:
ContentSlideControlsEntity contentSlideControlsEntity2 = container.Resolve<ContentSlideControlsEntity>();
但是我收到以下运行时错误:
Microsoft.Practices.Unity.ResolutionFailedException:'解决方案 依赖失败,输入= “MSDataLayer.Entities.ContentSlideControlsEntity”,name =“(none)”。
在解析时发生异常。
异常是:InvalidOperationException - Queue`1类型 多个长度为1的构造函数。无法消除歧义。
在例外时,容器是:
解析MSDataLayer.Entities.ContentSlideControlsEntity,(无)
解析构造函数的参数“slideIDQueue” MSDataLayer.Entities.ContentSlideControlsEntity(System.Collections.Generic.Queue`1 [[System.UInt32, mscorlib,版本= 4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089]] slideIDQueue)
Resolving System.Collections.Generic.Queue`1[System.UInt32],(none)
答案 0 :(得分:1)
您已将您的实例注册为命名注册,但您正在解析未命名的注册(不存在)。
container.RegisterInstance(typeof(ContentSlideControlsEntity), "contentSlideControlsEntity", contentSlideControlsEntity);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您有两个选择:
1)不要将其注册为命名注册
container.RegisterInstance(typeof(ContentSlideControlsEntity), contentSlideControlsEntity);
2)用名称解析它
container.Resolve<ContentSlideControlsEntity>("contentSlideControlsEntity");