admin管理员组

文章数量:1442415

C# 中三种依赖注入:AddTransient、AddScoped、AddSingleton 的区别

前言

在 C# 中,AddTransientAddScopedAddSingleton都可以实现依赖注入,那么三者之间有什么区别呢?本文就对这三者之间的区别进行了简单的总结。

区别

  • AddTransient:每次 service 请求都是获得不同的实例。暂时性模式:暂时性对象始终不同,无论是不是同一个请求(同一个请求里的不同服务)同一个客户端,每次都是创建新的实例。
  • AddScoped:对于同一个请求返回同一个实例,不同的请求返回不同的实例。作用域模式:作用域对象在一个客户端请求中是相同的,但在多个客户端请求中是不同的。
  • AddSingleton:每次都是获得同一个实例。单一实例模式:单一实例对象对每个对象和每个请求都是相同的,可以说是不同客户端不同请求都是相同的。

生命周期

  • AddSingleton的生命周期:项目启动-项目关闭 相当于静态类 只会有一个。
  • AddScoped的生命周期:请求开始-请求结束 在这次请求中获取的对象都是同一个。
  • AddTransient的生命周期:请求获取-(GC回收-主动释放) 每一次获取的对象都不是同一。

由于AddScoped对象是在请求的时候创建的,所以不能在AddSingleton对象中使用,甚至也不能在AddTransient对象中使用。

本文标签: C 中三种依赖注入AddTransientAddScopedAddSingleton 的区别