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