Bootstrap

.NET6 内置IOC容器

1 什么IOC?

借助于“第三方”容器来实现具有依赖关系的对象之间的解耦

把对象的创建统一交给第三方容器来创见;

DI依赖注入:IServiceCollection支持且仅支持构造函数注入

什么是依赖注入呢?

如果对象A依赖于对象B,对象B依赖于对象C,就可以先构造对象C,然后传递给对象B,然后把对象B传

递给对象A,得到A的具体实例;

IServiceCollection可以支持无线层级的依赖注入; 前提是都要先注入服务(注册接口和具体继承类的映射关系)

2.NET6 自带的IOC (IServiceCollection)容器使用

第一步 在 Program.cs 类中注册服务

左边是接口类 右边是继承类

builder.Services.AddTransient();

2 在需要使用的控制器中

通过构造函数注入,定义服务的接口类,作为参数,在运行时,自动得到服务的继承类

3 直接调用服务的内部方法

3.IServiceCollection生命周期

Program.cs 类 注册服务对象的时候可以注册不同生命周期的服务

常用的三种生命周期

AddTransient 瞬时生命周期

用完马上会释放

AddScoped: 作用域生命周期

同一个作用域,获取的是同一个对象的实例;不同的作用域获取的是不同的对象实 相当于 同一个请求一个实例 建议开发中 多用这种注册

AddSingleton: 单例生命周期

在整个进程中获取的都是同一个实例 建议用来做缓存的对象用这种注册

具体使用

4总结

.NET6 自带的IOC 容器只能支持构造函数注入 不能支持 属性注入 方法注入 (这个用的也不多),主要是不能支持 Config.json 配置文件注册 所以实际开发中我们一般用 Autofac 做为容器