反转toFactory与toDynamicValue

Est*_*ask 6 javascript ioc-container inversifyjs

这个相关问题显示了文档中的示例,但没有解释InversifyJS toFactorytoDynamicValue

toDynamicValue接受工厂功能,而toFactory接受高阶工厂功能。但是toDynamicValue也可以将工厂函数作为值返回。

他们可以达到相同的目的,并且行为如何不同?

如何BarBaz在这个例子有什么不同?

container.bind('Bar').toDynamicValue(
  context => fooName => context.container.getNamed(Foo, fooName)
)

container.bind('Baz').toFactory(
  context => fooName => context.container.getNamed(Foo, fooName)
)
Run Code Online (Sandbox Code Playgroud)

Mar*_*arc 1

在我看来,动态值语法是传递给任何值/lambda 并导致创建实例的语法。

Factory 语法会生成一个工厂,您还可以在其中获取上下文。从上下文中,您可以获取容器并使用服务位置来解析构建对象实例所需的其他对象。所以它是提供上下文和容器的间接方式。