c# – 如何使IDisposable对象成为类变量?

前端之家收集整理的这篇文章主要介绍了c# – 如何使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();
    }
}
原文链接:https://www.f2er.com/csharp/239231.html

猜你在找的C#相关文章