gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:15:34 25 4
gpt4 key购买 nike

我正在使用 C# 处理 Active Directory。实例化 PrincipalContext 对象似乎很昂贵,所以我想将一个对象存储在类变量中。

当使用 PrincipalContext 作为局部变量时,我可以使用方便的 using 语法。将 IDisposable 对象存储在静态变量中时,如何确保正确处置该对象?

最佳答案

一般模式是在您的类上实现 IDisposable 接口(interface)。举个例子:

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();
}
}

关于c# - 如何使 IDisposable 对象成为类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com