如何使用 Inversify 完成部分属性注入?
假设我们有课
class MyClass {
constructor(
@inject(EXTERNAL_A) private externalA: ExternalClassA,
private b: string
) {}
}
如果 b 的所有可能值在编译时都已知,我如何在其他类中使用这个 MyClass 和 inversify。所以,我只需要一个 MyClass 的实例b = "a"
和另一个带有b = "b"
.
我目前找到的唯一解决方案是两个为此定义两个不同的绑定或使用工厂直接调用new MyClass
.
在第一种情况下,我只需要写类似的东西
container.bind<MyClass>(CLASS_A).toConstantValue(
new MyClass(container.get<ExternalClassA>(EXTERNAL_A), "a")
);
container.bind<MyClass>(CLASS_B).toConstantValue(
new MyClass(container.get<ExternalClassA>(EXTERNAL_A), "b")
);
看起来很乱,没有解决下一个问题,工厂也没有解决。如果在这种情况下我有很深的对象层次结构,我需要通过这个手动对象构建链来构建它们。
这里最好的方法是什么?
带有星号的任务,是否可以通过用提供的单个依赖项替换相同的单个依赖项来解决某些依赖项树?就像,我们可以有类似的东西
|-----B-----e
A|-----C-----e
|-----D
|-----e
e
所以我不想用我构建的依赖来替换依赖。我怎样才能做到这一点?