Ben*_*Ben 6 c# idisposable active-directory class-variables
我正在使用C#使用Active Directory.实例化PrincipalContext对象似乎很昂贵,所以我想将一个存储在一个类变量中.
当PrincipalContext用作局部变量时,我可以使用方便的using语法.将IDisposable对象存储在静态变量中时,如何确保对象被正确处理?
一般模式是IDisposable在您的类上实现接口.举个例子:
public class YourClass : IDisposable
{
private OtherDisposableType yourResource;
public YourClass()
{
yourResource = new OtherDisposableType();
}
public void Dispose()
{
yourResource.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
这至少是您需要做的事情.
编辑
我之前的版本主张在所有情况下遵循终结器模式,这是(正确地)指出是违反框架设计指南.但是,如果您实际处理非托管资源(例如,您正在进行直接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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3997 次 |
| 最近记录: |