CA2220: Os finalizadores devem chamar o finalizador da classe base
TypeName |
FinalizersShouldCallBaseClassFinalizer |
CheckId |
CA2220 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Não separável |
Causa
Um tipo que substitui o Object.Finalize não chama o Finalize método na sua classe de base.
Descrição da regra
Finalização deve ser propagada por meio da hierarquia de herança. Para garantir isso, os tipos devem chamar sua classe base Finalize método de dentro do seu próprio Finalize método. O compilador C# adiciona automaticamente a chamada para o finalizador da classe base.
Como corrigir violações
Para corrigir uma violação desta regra, ligue para o tipo base Finalize método a partir do seu Finalize método.
Quando suprimir avisos
Não suprimir um aviso da regra. Alguns compiladores que visam common language runtime inserir uma chamada para o finalizador do tipo base em Microsoft intermediate language (MSIL). Se um aviso de que essa regra é reportado, o compilador não insere a chamada e você deve adicioná-lo ao seu código.
Exemplo
O exemplo de Visual Basic a seguir mostra um tipo de TypeB que chama corretamente o Finalize método na sua classe de base.
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