Asp.Net Core DI-服务注册
Asp.Net Core DI-服务注册
包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IServiceProvider对象。服务注册就是创建出现相应的ServiceDescriptor对象并将其添加到指定IServiceCollection集合对象中的过程。IServiceCollection实际上是包含了ServiceDescriptor对象的集合.
ServiceDescriptor
IServiceCollection对象是一个存放服务注册信息的集合.在IServiceCollection/IServiceProvider为核心的DI框架中,与之对应的类型为ServiceDescriptor.
DI框架将服务注册存储在一个通过IServiceCollection接口表示的集合之中.如下面的代码片段所示,一个IServiceCollection对象本质上就是一个元素类型为ServiceDescriptor的列表.在默认情况下我们使用的是实现该接口的ServiceCollection类型.
ServiceDescriptor共有5个属性,3个构造函数,如下所示:

属性说明:
- ServiceType:注册的服务类型.往往是一个接口
- ImplementationType:实现ServiceType接口的类
- ImplementationInstance:已经实例化的对象
- ImplementationFactory:提供对象的工厂方法.类型为Func
- Lifetime:生命周期,枚举类型,对应有三个值,分别为:Singleton,Scoped,Transient


