.NET Core 常用的三个生命周期

1、 Transient(瞬发生命周期)

Transient 生命周期:每次请求都会创建一个新的实例。这对于具有短暂状态的服务是合适的,例如临时计算或数据转换。

services.AddTransient<IMyService, MyService>();

2、 Scoped(区域生命周期)

Scoped生命周期:在同一请求内共享相同的实例。这对于需要在多个组件之间共享数据的服务是合适的,例如数据库上下文。

services.AddScoped<IMyService, MyService>();

3、 Singleton(单例生命周期)

Singleton生命周期:在应用程序的整个生命周期中只存在一个实例。这对于需要在应用程序的不同组件之间共享状态的服务是合适的,例如全局配置或共享缓存。

复制代码
services.AddSingleton<IMyService, MyService>();

个人总结

Transient(瞬发生命周期): 就是每一次访问都是相当于New了一个新的对象,例如:在A方法调用User类会new 一个新的User,在B方法中同样会new一个新的对象,这两个对象不相等.

Scoped(区域生命周期): 就是在同一次访问中例如访问一个方法,在if中声明的对象,在else中是不能使用的.

Singleton(单例生命周期): 就是在项目运行期间,这个对象只会存在一个,无论在哪调用,调用到的都是一个对象.

相关推荐
神仙别闹1 天前
基于 .Net Core+MySQL开发(WinForm)翻译平台
数据库·mysql·.netcore
孤的心了不冷1 天前
【后端】.NET Core API框架搭建(9) --配置使用Log4Net日志
后端·.netcore
孤的心了不冷2 天前
【后端】配置SqlSugar ORM框架并添加仓储
mysql·sqlserver·.netcore
时光追逐者3 天前
C#/.NET/.NET Core技术前沿周刊 | 第 46 期(2025年7.7-7.13)
c#·.net·.netcore
王柏龙3 天前
aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders
mvc·.netcore
江沉晚呤时4 天前
在 C# 中调用 Python 脚本:实现跨语言功能集成
python·microsoft·c#·.net·.netcore·.net core
喵叔哟5 天前
3. 【Blazor全栈开发实战指南】--Blazor是什么?为什么选择Blazor?
c#·.netcore
deriva14 天前
.netcore+ef+redis+rabbitmq+dotcap先同步后异步再同步的方法,亲测有效
redis·rabbitmq·.netcore
棉晗榜1 个月前
C# .net core添加单元测试项目,依赖注入接口测试
单元测试·c#·.netcore
时光追逐者1 个月前
.NET初级软件工程师面试经验分享
经验分享·面试·职场和发展·c#·.net·.netcore