gpt4 book ai didi

parameters - Ninject 2.0 的上下文绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 12:14:38 25 4
gpt4 key购买 nike

在 Ninject 1.0 中,我有以下绑定(bind)定义:

Bind<ITarget>().To<Target1>().Only(When.Context.Variable("variable").EqualTo(true));
Bind<ITarget>().To<Target2>();

鉴于这样的绑定(bind),我有电话:
ITarget target = kernel.Get<ITarget>(With.Parameters.ContextVariable("variable", true));
ITarget target = kernel.Get<ITarget>(With.Parameters.ContextVariable("variable", false));

第一次调用被解析到 Target1 的实例,第二次调用被解析到 Target2 的实例。

如何将其翻译成 Ninject 2.0?

最佳答案

您可以使用元数据,

[Fact]
public void MetadataBindingExample()
{
string metaDataKey = "key";
kernel.Bind<IWeapon>().To<Shuriken>().WithMetadata(metaDataKey, true);
kernel.Bind<IWeapon>().To<Sword>().WithMetadata(metaDataKey, false);
kernel.Bind<IWeapon>().To<Knife>();

var weapon = kernel.Get<IWeapon>(metadata => metadata.Has(metaDataKey) && metadata.Get<bool>(metaDataKey));
Assert.IsType<Shuriken>( weapon );

weapon = kernel.Get<IWeapon>(metadata => metadata.Has(metaDataKey) && !metadata.Get<bool>(metaDataKey));
Assert.IsType<Sword>(weapon);

weapon = kernel.Get<IWeapon>(metadata => !metadata.Has(metaDataKey));
Assert.IsType<Knife>(weapon);
}

关于parameters - Ninject 2.0 的上下文绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507881/

25 4 0