unity-container - 在 Unity 中需要处理?

标签 unity-container dispose

可能是 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/

相关文章:

c# - 将动态对象映射到接口(interface)并向 IoC 注册

asp.net-mvc - 错误: Make sure that the controller has a parameterless public constructor webapi

c# - 对流使用 Close 而不是 Dispose 的原因?

C# "using"语句中的匿名对象可靠吗?

c# - 我们在C#中有非托管资源吗?

c# - 如何最好地处置因 AutoResetEvent.WaitOne() 而处于休眠状态的线程

asp.net-web-api - Asp.net 身份,生成 WebApi token OAuthGrantResourceOwnerCredentialsContext - 无法使用 Unity 访问 UserManager

dependency-injection - 配置文件中映射正确时的 Unity Container ResolutionFailedException

.net - Unity框架-重用实例

c# - 使用线程正确处理类