No. The pattern actually says that Dispose()
(non-virtual) should call a protected virtual void Dispose(bool)
method. This guarantees that the base class Dispose
call can pass up the hierarchy properly.
This is spelled out in the documentation for IDisposable:
- It should provide one public, non-virtual Dispose() method and a protected virtual Dispose(Boolean disposing) method.
- The Dispose() method must call Dispose(true) and should suppress finalization for performance.
- The base type should not include any finalizers.