8

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

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)
)
4

1 回答 1

1

正如我所看到的,动态值语法是您传递给任何值/ lambda 的语法,它会导致创建一个实例。

Factory 语法会生成一个工厂,您还可以在其中获取上下文。从上下文中,您可以获取容器并使用 service-location 来解析您需要构建对象实例的其他对象。所以它间接提供上下文,因此也提供容器。

于 2019-03-13T07:59:43.523 回答