.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<IVirtualWalletService, VirtualWalletServiceApp>();
2 在需要使用的控制器中
通过构造函数注入,定义服务的接口类,作为参数,在运行时,自动得到服务的继承类
3 直接调用服务的内部方法
3.IServiceCollection 生命周期
Program.cs 类 注册服务对象的时候可以注册不同生命周期的服务
常用的三种生命周期
AddTransient 瞬时生命周期
用完马上会释放
AddScoped: 作用域生命周期
同一个作用域,获取的是同一个对象的实例;不同的作用域获取的是不同的对象实 相当于 同一个请求一个实例 建议开发中 多用这种注册
AddSingleton: 单例生命周期
在整个进程中获取的都是同一个实例 建议用来做缓存的对象用这种注册
具体使用
4 总结
.NET6 自带的 IOC 容器只能支持构造函数注入 不能支持 属性注入 方法注入 (这个用的也不多),主要是不能支持 Config.json 配置文件注册 所以实际开发中我们一般用 Autofac 做为容器
评论