我是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
如果有多个绑定,如何解析未命名的绑定?
由于
答案 0 :(得分:3)
如果要将未命名的绑定视为“默认”,则需要将.BindingConfiguration.IsImplicit = true
添加到命名绑定中。像这样:
Bind<Dependency3>().ToConstant(instance1)
.Named("instance1")
.BindingConfiguration.IsImplicit = true;
否则命名绑定将满足没有名称的请求。