CA2222 : Ne réduisez pas la visibilité des membres hérités
Élément | Valeur |
---|---|
ID de la règle | CA2222 |
Category | Microsoft.Usage |
Modification avec rupture | Sans rupture |
Cause
Une méthode privée dans un type non scellé a une signature identique à une méthode publique déclarée dans un type de base. La méthode privée n’est pas finale.
Notes
Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.
Description de la règle
Ne changez pas le modificateur d’accès destiné aux membres hérités. La modification d'un membre hérité au profit d'un état privé n'empêche pas les appelants d'accéder à l'implémentation de classe de base de la méthode. Si le membre est rendu privé et que le type est non scellé, les types hérités peuvent appeler la dernière implémentation publique de la méthode dans la hiérarchie d’héritage. Si vous devez modifier le modificateur d’accès, la méthode doit être marquée comme finale ou son type doit être scellé pour empêcher la substitution de la méthode.
Comment corriger les violations
Pour corriger une violation de cette règle, modifiez l’accès pour qu’il ne soit pas privé. Sinon, si votre langage de programmation le prend en charge, vous pouvez rendre la méthode finale.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
L’exemple suivant montre un type qui enfreint cette règle.
using System;
namespace UsageLibrary
{
public class ABaseType
{
public void BasePublicMethod(int argument1) {}
}
public class ADerivedType:ABaseType
{
// Violates rule: DoNotDecreaseInheritedMemberVisibility.
// The compiler returns an error if this is overridden instead of new.
private new void BasePublicMethod(int argument1){}
}
}
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