CA2220: os finalizadores devem chamar o finalizador da classe base
TypeName |
FinalizersShouldCallBaseClassFinalizer |
CheckId |
CA2220 |
Categoria |
Microsoft.Usage |
Alteração Significativa |
Sem Quebra |
Causa
Um tipo que substitui Object.Finalize não chama o método de Finalize em sua classe base.
Descrição da Regra
O acabamento deveriam ser propagadas pela hierarquia de herança.Para assegurar isso, os tipos devem chamar o método de Finalize da classe base a partir de seu próprio método de Finalize .O compilador C# adiciona a chamada para o finalizador da classe base automaticamente.
Como Corrigir Violações
Para corrigir uma violação desta regra, chame o método de Finalize do tipo base do método de Finalize .
Quando Suprimir Alertas
Não elimine um alerta desta regra.Alguns compiladores que se destinam à inserção de Common Language Runtime uma chamada para finalizador de tipo base na linguagem intermediária da Microsoft (MSIL).Se um aviso dessa regra é relatado, seu compilador não insere a chamada, e você deverá adicioná-la ao seu código.
Exemplo
O exemplo do Visual Basic mostra um tipo TypeB corretamente que chama o método de Finalize em sua classe 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