JD2022-TU1/main/tools/framework/JD.Kernel/Classes/AbstractFinalizable.cs

63 lines
No EOL
1.2 KiB
C#

using System;
namespace JD.Kernel.Classes
{
public class AbstractFinalizable : IDisposable
{
#region Variables
private bool m_isDisposed;
#endregion
#region Methods
/// <summary>
/// Finalizer.
/// </summary>
~AbstractFinalizable()
{
DisposeImpl(false);
}
/// <summary>
/// Dispose.
/// </summary>
public void Dispose()
{
DisposeImpl(true);
GC.SuppressFinalize(this);
}
private void DisposeImpl(bool disposing)
{
if (!m_isDisposed)
{
m_isDisposed = true;
Dispose(disposing);
}
}
/// <summary>
/// Protected implementation of the Dispose pattern.
/// </summary>
/// <param name="disposing"></param>
protected virtual void Dispose(bool disposing)
{
}
#endregion
#region Properties
/// <summary>
/// Has this object been disposed?
/// </summary>
public bool IsDisposed
{
get { return m_isDisposed; }
}
#endregion
}
}