如果对象的类型是用Unity中的TransientLifetimeManager映射的,垃圾收集器会回收对象吗?

问题描述 投票:0回答:1

如果对象的类型与Unity中的TransientLifetimeManager映射,垃圾收集器将回收对象吗?

我假设垃圾收集器将回收该对象。因此,这使我提出以下问题:TransientLifetimeManagerExternallyControlledLifetimeManager有什么区别?两者都不跟踪对象的生存期。

如果注册到TransientLifetimeManager的类型无法回收,我还有另一个问题:开发人员为什么要做出这样的决定?保留在TransientLifetimeManager中注册的类型似乎是不合理的,因为可能创建了许多类型。并且一旦创建了注册有TransientLifetimeManager的类型的对象,该IoC容器就只能将引用提供给消费者一次,因此,再也没有必要保留对该对象的引用了。

NOTE

该问题与Unity3D根本无关。请保持专业水平,如果您不知道所涉及的内容,请勿编辑该问题。

.net dependency-injection unity-container ioc-container object-lifetime
1个回答
2
投票

TransientLifetimeManager不会跟踪lifietime,但会为每个解析创建新实例。ExternallyControlledLifetimeManager不跟踪生存期,仅创建一个实例。容器仅持有对对象的弱引用,因此在容器处置后,对象将保持活动状态。

articleexamples中的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.