解析未命名 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;
否则命名绑定也将满足没有名称的请求。
我是 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;
否则命名绑定也将满足没有名称的请求。