This related question显示examples from the documentation,但没有解释InversifyJS toFactory
和toDynamicValue
之间的实际区别
toDynamicValue
接受工厂功能,而toFactory
接受高阶工厂功能。但toDynamicValue
也可以将工厂功能作为一种价值。
他们可以达到同样的目的吗?他们的行为如何不同?
在这个例子中,Bar
和Baz
有何不同?
container.bind('Bar').toDynamicValue(
context => fooName => context.container.getNamed(Foo, fooName)
)
container.bind('Baz').toFactory(
context => fooName => context.container.getNamed(Foo, fooName)
)
正如我所看到的,动态值语法是您传递给任何值/ lambda的语法,导致创建实例。
Factory语法导致您在工厂中获得上下文。从上下文中,您可以获取容器并使用service-location来解析构建对象实例所需的其他对象。所以它是一个间接提供上下文,因此也提供容器。