MS建議基類應在派生類中提供protected virtual void Dispose(bool disposing)
。我有一個更早寫的現有類,它不提供這樣的功能。通過知道事實基類是Disposable,我們可以簡單地在任何派生類中使用以下內容嗎?不提供受保護的Dispose(bool)方法的基類?
class Base : IDisposable
{
//This somehow disposes it's resources
}
class Derived : Base
{
bool disposed;
private void PrivateDispose(bool disposing)
{
if (disposed) return;
if (disposing) {
// Cleanup managed resources
// ...
// Simply dispose base class
base.Dispose();
}
// Cleanup unmanged resources if any
// ...
disposed = true;
}
public void Dispose()
{
PrivateDispose(true);
GC.SuppressFinalize(this);
}
// Only provide Finalizer if we have unmanaged resources
~Derived()
{
PrivateDispose(false);
}
}
爲什麼你會在.NET 2.0及更高版本中使用該模式? – CodesInChaos 2015-03-02 11:43:16