All pastes #2001278 Raw Edit

How to implement IDisposable

public text v1 · immutable
#2001278 ·published 2010-11-24 19:36 UTC
rendered paste body
   public abstract class DisposablePattern : IDisposable
   {
      protected abstract void FreeManaged();
      protected abstract void FreeUnmanaged();

      private bool disposed;

      protected void CheckDisposed() { if( disposed ) throw new ObjectDisposedException( GetType().Name ); }

      public void Dispose()
      {
         Dispose( true );
         GC.SuppressFinalize( this );
      }

      protected virtual void Dispose( bool disposing )
      {
         if( !disposed )
         {
            if( disposing )
               FreeManaged();
            FreeUnmanaged();
            disposed = true;
         }
      }

      ~DisposablePattern()
      {
         Dispose( false );
      }
   }