Partager via


Les finaliseurs doivent appeler le finaliseur de leur classe de base

Mise à jour : novembre 2007

TypeName

FinalizersShouldCallBaseClassFinalizer

CheckId

CA2220

Catégorie

Microsoft.Usage

Modification avec rupture

Modification sans rupture

Cause

Un type qui substitue Object.Finalize n'appelle pas la méthode Finalize dans sa classe de base.

Description de la règle

La finalisation doit être propagée par le biais de la hiérarchie d'héritage. Pour garantir ce procédé, les types doivent appeler leur méthode Finalize de classe de base à partir de leur propre méthode Finalize. Le compilateur C# ajoute automatiquement l'appel au finaliseur de classe de base.

Comment corriger les violations

Pour corriger une violation de cette règle, appelez la méthode Finalize du type de base de votre méthode Finalize.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle. Certains compilateurs qui ciblent le Common Language Runtime insèrent un appel au finaliseur du type de base dans le langage intermédiaire de Microsoft, MSIL (MicroSoft Intermediate Language). Si un avertissement issu de cette règle est rapporté, votre compilateur n'insère pas l'appel, et vous devez l'ajouter à votre code.

Exemple

L'exemple Visual Basic suivant présente un type TypeB qui appelle correctement la méthode Finalize dans sa 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

Voir aussi

Référence

Implémentation des méthodes Finalize et Dispose pour nettoyer des ressources non managées