gpt4 book ai didi

ninject - 解决未命名的 Ninject 多重绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 23:45:30 26 4
gpt4 key购买 nike

我是 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

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

谢谢

最佳答案

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

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

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

关于ninject - 解决未命名的 Ninject 多重绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com