c# – 如何使IDisposable对象成为类变量?
发布时间:2020-12-15 08:17:09 所属栏目:百科 来源:网络整理
导读:我正在使用C#使用Active Directory.实例化PrincipalContext对象似乎很昂贵,所以我想将一个存储在一个类变量中. 当使用PrincipalContext作为局部变量时,我可以使用方便的使用语法.将IDisposable对象存储在静态变量中时,如何确保对象被正确处理? 解决方法 一
我正在使用C#使用Active Directory.实例化PrincipalContext对象似乎很昂贵,所以我想将一个存储在一个类变量中.
当使用PrincipalContext作为局部变量时,我可以使用方便的使用语法.将IDisposable对象存储在静态变量中时,如何确保对象被正确处理? 解决方法
一般模式是在您的类上实现IDisposable接口.举个例子:
public class YourClass : IDisposable { private OtherDisposableType yourResource; public YourClass() { yourResource = new OtherDisposableType(); } public void Dispose() { yourResource.Dispose(); } } 这至少是您需要做的事情. 编辑 我之前的版本主张在所有情况下遵循终结器模式,这是(正确地)指出是违反框架设计指南.但是,如果您实际上正在处理非托管资源(例如,您正在进行直接P / Invoke调用并获取需要显式释放的句柄),建议您创建终结器并在其中调用Dispose防止使用代码并且不调用Dispose的人: public class YourClass : IDisposable { private OtherDisposableType yourResource; public YourClass() { yourResource = new OtherDisposableType(); } public void Dispose() { yourResource.Dispose(); GC.SuppressFinalize(this); } ~YourClass() { Dispose(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |