可能是 Unity 初学者的一个问题:在使用 Unity 时,您是否还需要在已注入(inject)的对象上实现 Dispose 方法?或者甚至不需要(所以,由 Unity 自动完成)?这是在 Web 应用程序的上下文中。
最佳答案
实现 IDisposable
与Unity无关。当您的类型使用非托管资源(如文件)时,您应该实现该接口(interface),这些资源不能被 CLR 垃圾收集。
团结可以manage the lifetime您的类型和实例。对于这种情况,Unity 提供了不同类型的 LifeTimeManager 来控制实例的生命周期。
Unity 只尊重 IDisposable
使用 ContainerControlledLifetimeManager
注册它们时的界面或 HierarchicalLifetimeManager
.这意味着当您处理 Unity-Container 时,它也会调用 Dispose
在所有实现 IDisposable
的实例上由上面命名的 LifetimeManager 注册的接口(interface)。
当您注册实现 IDisposable
的类型时接口(interface)使用TransientLifetimeManager
(您在容器上调用 Resolve 的每种类型都会获得一个新实例),您可以调用 Dispose
在实例上。
关于unity-container - 在 Unity 中需要处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581655/