简单的注射器 - 退出终身范围

时间:2016-03-16 17:44:43

标签: simple-injector

我对文档中的这句话很感兴趣。

  

对于隐式或显式定义的范围内的每个请求,a   将返回该服务的单个实例,该实例将返回   在范围结束时予以处理。

退出使用块时实际发生了什么。如果我的服务不是IDisposable,那么对象是否会停止缓存并随后为GC释放?

using(container.BeginLifetimeScope())
{
   myServiceThatDoesNotImplementIDisposable; 
}

由于

1 个答案:

答案 0 :(得分:2)

  

退出使用区块时实际发生的事情

当在作用域上调用Dispose时(当你离开使用块时会发生什么),在该作用域中缓存的所有一次性组件也被处理掉,所有创建的作用域实例(一次性和非一次性)的缓存都被清除。这使得这些对象有资格进行垃圾收集。

同样适用于单身人士,尽管他们的范围是在容器的整个生命周期内。它们在容器被处理时被丢弃,并且当它们的容器实例时会被收集垃圾。

另一方面,瞬态实例永远不会被容器跟踪。这意味着它们不是缓存中的存储。创建后,容器会立即忘记它们。

相关问题