0

我实际上正在研究角度 DI 容器,我需要一些信息。

其实看API,好像Injector类在工厂参数中接受了一个Binding列表,并解析得到一个ResolvedBinding列表。

注意:https ://angular.io/docs/js/latest/api/di/

我想知道系统如何管理 Binding 和 ResolvedBing 之间的转换,因为:

  • 绑定可以返回一个值
  • 绑定可以返回别名
  • 绑定可以返回一个类
  • 绑定可以返回工厂

ResolvedBinding 构造函数如下:

constructor(key:Key, factory:Function,...)

似乎可以在需要时返回一个工厂(和类,如果我们承认类是通过工厂创建的),但是如果我只需要返回一个值怎么办?fw 是否创建了一个专门返回值的工厂?

4

1 回答 1

2

传递给注入器创建的绑定并没有真正返回这些值之一。绑定从字面上表示绑定配置本身。

您可能知道,绑定 get 是一个令牌,并使用工厂函数告诉注入器如何创建特定类型的实例。所以你在这里提到的工厂函数可以是.toClass(), .toFactory(), .toValue().

配方在创建之前被规范化ResolvedBinding。以下是应该澄清的 LOC:https ://github.com/angular/angular/blob/master/modules/angular2/src/di/binding.ts#L221-L246

于 2015-06-16T09:19:12.857 回答