CA2220 : Les finaliseurs doivent appeler le finaliseur de leur classe de base

Élément Valeur
ID de la règle CA2220
Category Microsoft.Usage
Modification avec rupture Sans rupture

Cause

Un type qui écrase System.Object.Finalize n’appelle pas la méthode Finalize dans sa classe de base.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

Description de la règle

La finalisation doit être propagée par le biais de la hiérarchie d'héritage. Pour ce faire, les types doivent appeler leur méthode de classe de base Finalize à 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 du type de base Finalize à partir 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 MSIL (Microsoft Intermediate Language). Si un avertissement lié à cette règle est signalé, votre compilateur n’insère pas l’appel et vous devez l’ajouter à votre code.

Exemple

L’exemple Visual Basic suivant montre 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