0

假设我在 InversifyJS 中使用了多重注入,就像在官方示例中一样:

container.bind<Ninja>("Ninja").to(Ninja);
container.bind<Weapon>("Weapon").to(Katana);
container.bind<Weapon>("Weapon").to(Shuriken);

是否可以从绑定的结核中注入特定的结核?例如,我想明确地注入 Katana 凝结物,我该怎么做?我不想使用多注入和迭代/访问数组。就我而言,我需要在一个地方进行多次注射,在另一个地方进行单次注射。

这不起作用,因为它给出了一个模棱两可的定义错误:

@inject("Weapon") private weapon: Katana
4

1 回答 1

0

查看命名绑定。或标记 bindings。也是默认目标

container.bind<Weapon>("Weapon").to(Katana).whenTargetNamed("strong");
container.bind<Weapon>("Weapon").to(Shuriken).whenTargetNamed("weak");

@inject("Weapon") @named("strong") katana: Weapon,
@inject("Weapon") @named("weak") shuriken: Weapon
于 2019-08-03T19:12:33.537 回答