.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 做为容器