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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour