gpt4 book ai didi

typescript - 在 Inversify 中,为什么更喜欢 Constructor/Factory 注入(inject)而不是 toDynamicValue?

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:45 25 4
gpt4 key购买 nike

InversifyJS , 遵循 factory injection guide 中概述的方法是否有任何特定优势?和 constructor injection guide 用于分别使用 toDynamicValue 注入(inject)工厂和构造函数.

最佳答案

构造函数

如果您使用 toConstructor,您将能够将参数传递给构造函数,但您将无法解析这些参数(除非您也注入(inject)它们)。

container.bind<interfaces.Newable<Katana>>("Newable<Katana>")
.toConstructor<Katana>(Katana);

动态值

如果您使用 toDynamicValue,您将能够将构造函数参数传递给构造函数并使用 context 解析这些参数。

container.bind<Katana>("Katana")
.toDynamicValue((context: interfaces.Context) => {
return new Katana(context.container.get("SomeDependency"));
});

到工厂

如果您使用 toFactory,您将能够将构造函数参数传递给构造函数并使用 context 解析这些参数,但您也将能够产生不同的输出基于工厂参数。

container.bind<interfaces.Factory<Weapon>>("Factory<Weapon>")
.toFactory<Weapon>((context: interfaces.Context) => {
return (throwable: boolean) => {
if (throwable) {
return context.container.getTagged<Weapon>(
"Weapon", "throwable", true
);
} else {
return context.container.getTagged<Weapon>(
"Weapon", "throwable", false
);
}
};
});

关于typescript - 在 Inversify 中,为什么更喜欢 Constructor/Factory 注入(inject)而不是 toDynamicValue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867437/

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