解析未命名的Ninject多重绑定

时间:2015-04-06 12:25:50

标签: ninject

我是Ninject的新手,我正在努力让这个测试通过。 (此测试通过了Autofac,但在Ninject中的行为似乎有所不同)。

[Test]
public void RegisterInstance_unnamed_should_return_unnamed_when_multiple_registrations()
{
    var sut = new StandardKernel();
    var instance1 = new Dependency3();
    var instance2 = new Dependency3();

    sut.Bind<Dependency3>().ToConstant(instance1).Named("instance1");
    sut.Bind<Dependency3>().ToConstant(instance2);

    sut.Get<Dependency3>("instance1").ShouldBeSameAs(instance1);
    sut.Get<Dependency3>().ShouldBeSameAs(instance2);
}

当我拨打最后一行时,我收到此异常消息:

  

Ninject.ActivationException:激活Dependency3

时出错      

没有匹配的绑定可用,并且该类型不可自我绑定。

     

激活路径:1)请求Dependency3

如果有多个绑定,如何解析未命名的绑定?

由于

1 个答案:

答案 0 :(得分:3)

如果要将未命名的绑定视为“默认”,则需要将.BindingConfiguration.IsImplicit = true添加到命名绑定中。像这样:

Bind<Dependency3>().ToConstant(instance1)
   .Named("instance1")
   .BindingConfiguration.IsImplicit = true;

否则命名绑定将满足没有名称的请求。