解析未命名 Ninject 多重绑定

Resolving unnamed Ninject multi-binding

我是 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 : Error activating Dependency3

No matching bindings are available, and the type is not self-bindable.

Activation path: 1) Request for Dependency3

当存在多个绑定时,如何解析未命名的绑定?

谢谢

如果您想将未命名绑定视为 "default",您需要将 .BindingConfiguration.IsImplicit = true 添加到命名绑定。像这样:

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

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