CA2222: No disminuir la visibilidad del miembro heredado
Elemento | Valor |
---|---|
RuleId | CA2222 |
Category | Microsoft.Usage |
Cambio importante | Poco problemático |
Causa
Un método privado de un tipo no sellado tiene una firma idéntica a un método público declarado en un tipo base. El método privado no es final.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
No cambie el modificador de acceso para los miembros heredados. Cambiando un miembro heredado a privado no evita que los llamadores tengan acceso a la implementación de la clase base del método. Si el miembro se convierte en privado y el tipo es no sellado, los tipos heredados pueden llamar a la última implementación pública del método en la jerarquía de herencia. Si debe cambiar el modificador de acceso, el método debe marcarse como final o su tipo debe estar sellado para impedir que el método se invalide.
Cómo corregir infracciones
Para corregir una infracción de esta regla, cambie el acceso a no privado. Como alternativa, si el lenguaje de programación lo admite, puede hacer que el método sea final.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente se muestra un tipo que infringe esta regla.
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){}
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de