无法使用Unity容器

时间:2017-06-20 16:36:57

标签: c# unity-container

我用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)

1 个答案:

答案 0 :(得分:1)

您已将您的实例注册为命名注册,但您正在解析未命名的注册(不存在)。

container.RegisterInstance(typeof(ContentSlideControlsEntity), "contentSlideControlsEntity", contentSlideControlsEntity);
                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

您有两个选择:

1)不要将其注册为命名注册

container.RegisterInstance(typeof(ContentSlideControlsEntity), contentSlideControlsEntity);

2)用名称解析它

container.Resolve<ContentSlideControlsEntity>("contentSlideControlsEntity");