Não diminuir a visibilidade de membro herdado

TypeName

DoNotDecreaseInheritedMemberVisibility

CheckId

CA2222

Category (Categoria)

Microsoft.uso

Quebrando alterar

Não separável

Causa

Um método particular em um tipo sem lacre tem uma assinatura que é idêntica a um método público declarado em um tipo de base.O método particular não é final.

Descrição da regra

Você não deve alterar o modificador de acesso para os membros herdados.Alterando um membro herdado para particular não impede que os chamadores acessem a implementação do método da classe base.Se o membro é feito em particular e o tipo é sem lacre, tipos podem herdar telefonar a última pública implementação do método na hierarquia de herança.Se você precisar alterar o modificador de acesso, ou o método deverá estar marcado como final ou seu tipo deve ser sealed para impedir que o método seja substituído.

Como corrigir violações

Para corrigir uma violação dessa regra, altere o acesso a ser não-particulares.Como alternativa, se aceitar sua linguagem de programação, você pode fazer o método final.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra um tipo que violam essa regra.

Imports System

Namespace UsageLibrary
Public Class ABaseType

   Public Sub BasePublicMethod(argument1 As Integer)
   End Sub 'BasePublicMethod

End Class 'ABaseType 

Public Class ADerivedType
   Inherits ABaseType

   ' Violates rule DoNotDecreaseInheritedMemberVisibility.
   Private Shadows Sub BasePublicMethod(argument1 As Integer)
   End Sub 'BasePublicMethod
End Class 'ADerivedType

End Namespace
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){}       
    }
}