首页 > 技术文章 > 06 | 作用域与对象释放行为:你知道IDisposable对象释放的时机和坑吗?

wwwk 2022-02-08 23:45 原文

作用域

  • IServiceScope
  • 作用域主要是由IServiceScope这个接口来承载的

实现IDisposable接口类型的释放

  • 对于实现了IDisposable类的实例的对象,我们容器会负责对其生命周期的管理,当我们使用完毕以后,它会去释放这些对象。
  • DI(容器)只负责由其创建的对象的实例
    • 如果这个对象是由我们创建并放到容器里的,容器是不负责释放这个对象的
  • DI在容器或子容器释放时,释放由其创建的对象实例
  • 也就是说,容器的生命周期与其创建的对象的生命周期是有对应关系的。

建议

  • 避免在根容器获取实现了IDisposable接口的瞬时服务
  • 避免手动创建实现了IDisposable对象,应该使用容器来管理其生命周期

例子

首先我们新建Web程序

推荐阅读