InversifyJS:从多次注入定义中注入特定的构想

时间:2019-05-07 14:11:57

标签: javascript dependency-injection inversifyjs

假设我像official example一样在InversifyJS中使用多次注入:

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

是否可以从绑定的混凝土中注入特定的混凝土? 例如。我想明确地注入片假名,我该怎么做?我不想使用多次注入并遍历/访问数组。 就我而言,我需要在一个地方进行多次注射,而在另一处进行一次注射。

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

@inject("Weapon") private weapon: Katana

1 个答案:

答案 0 :(得分:0)

签出named bindings。 或tagged bindings。还有default targets

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