<p>Is there a catch or hidden problem in using a <a href="http://www.danrigsby.com/blog/index.php/2008/03/15/disposable-base-class/" rel="nofollow noreferrer">DisposableBase base class</a> instead of recoding the Dispose pattern on every class?</p>

<p>Why aren't everyone using such a <strong>relevant</strong> class?</p>

<p><strong>Edits</strong>:</p>

<ol>
<li><p>I naturally only meant classes that implement IDisposable</p></li>
<li><p>I know it uses up the option for inheritance, but I'm willing to pay the price (at least when I can and it doesn't hurt me otherwise).</p></li>
<li><p>When I can seal the class, I do - but I have some cases where I want the base of an inheritance hierarchy to be Disposable.</p></li>
</ol>

You don't need to implement Dispose() on
every
class - just those with something that needs deterministic cleanup. Re a Disposable base-class, I'm not entirely sure it provides a whole lot -
```
IDisposable
```
isn't a complex interface. The main time it might be useful is if you are handling unmanaged resources and want a finalizer, but even then it isn't much code.
Personally, I wouldn't bother with such a base class. In particular, inheritance (in a single-inheritance world) gets restrictive very quickly. But more to the point, overriding a method isn't much different to simply providing a public Dispose() method.
Again: you only need a finalizer etc if you are handling unmanaged objects.
If I had a lot of these (unmanaged resouces), I might see whether I could get
PostSharp
to do the work for me. I don't know if one already exists, but it
might
be possible to create an aspect that handles (in particular) the finalizer etc. Who knows...