CA2215: Métodos Dispose devem chamar dispose de classe base
TypeName |
DisposeMethodsShouldCallBaseClassDispose |
CheckId |
CA2215 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Não separável |
Causa
Um tipo que implementa System.IDisposable herda a partir de um tipo que implementa também IDisposable. O Dispose não chama o método do tipo herdando o Dispose o método do tipo pai.
Descrição da regra
Se um tipo herda a partir de um tipo descartável, ele deve chamar o Dispose o método do tipo base em seu próprio Dispose método. Chamando o método do tipo base Dispose que garante que todos os recursos criados pelo tipo de base são liberados.
Como corrigir violações
Para corrigir uma violação desta regra, chamada base.Dispose no seu Dispose método.
Quando suprimir avisos
É seguro eliminar um aviso esta regra se a chamada para base.Dispose ocorre em um nível mais profundo de chamada verificações da regra.
Exemplo
O exemplo a seguir mostra um tipo de TypeA que implementa IDisposable.
using System;
namespace UsageLibrary
{
public class TypeA :IDisposable
{
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// Dispose managed resources
}
// Free native resources
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
// Disposable types implement a finalizer.
~TypeA()
{
Dispose(false);
}
}
}
O exemplo a seguir mostra um tipo de TypeB que herda do tipo TypeA e chama corretamente seu Dispose método.
Imports System
Namespace UsageLibrary
Public Class TypeB
Inherits TypeA
Protected Overrides Sub Finalize()
Try
Dispose(False)
Finally
MyBase.Finalize()
End Try
End Sub
End Class
End Namespace
Consulte também
Referência
Implementando finalizar e Dispose para limpeza de recursos não gerenciados