实例的时候,即我们通常描述的作用域 。这个实例里包含了ResolvedServices
属性和Disposables
属性,分别保存当前作用域内即生命周期为ServiceLifetime.Scoped
实例和实现了IDisposable
或IAsyncDisposable
接口的实例 。
GetService()
方法在当前作用域内获取实例的时候,会根据服务注册时使用的生命周期判断是否加入到当前作用域里享元的实例 。其中单例来自于根容器,瞬时的每次都需要创建新的实例所以不需要保存,只有生命周期为ServiceLifetime.Scoped
才保存 。瞬时的和Scope的对象创建出来的时候都会判断是否实现了IDisposable
或IAsyncDisposable
接口 , 如果是则加入到Disposables
属性的集合里用于释放 。IServiceScope
实例Dispose()
相关方法的时候,会遍历Disposables
集合里的对象进行Dispose相关方法调用,并不是回收托管到当前作用域内的对象,因为对象何时被回收取决于GC
即垃圾回收机制 。推荐阅读
- asp.net core web 解决方案多项目模板制作打包总结
- ubuntu-22.04 树莓派Zero 2 W通过.NET6和libusb操作USB读写
- 上 学习ASP.NET Core Blazor编程系列六——新增图书
- Azure DevOps Pipelines部署.Net Core 应用到Kubernetes
- C语言小白刷题
- 记一次 .NET 某企业OA后端服务 卡死分析
- .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现
- .Net CLR异常简析
- 记一次 .NET 某电子病历 CPU 爆高分析
- .NET 7 RC 2 发布,倒计时一个月发布正式版