写点什么

.NET6 内置 IOC 容器

  • 2021 年 11 月 17 日
  • 本文字数:647 字

    阅读完需:约 2 分钟

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

用户头像

8年.net 老程序猿 后端工程狮 2021.01.30 加入

06年毕业,8年开发 4年架构。现在在公司打杂 有硬核文章,还有幽默风趣的诗和远方。

评论

发布
暂无评论
.NET6 内置IOC容器