Partilhar via


Não declarará membros protegidos em tipos lacrados

TypeName

DoNotDeclareProtectedMembersInSealedTypes

CheckId

CA1047

Category (Categoria)

Microsoft.Design

Quebrando alterar

Não separável

Causa

Um tipo público é sealed (NotInheritable no Visual basic) e declara um membro protegido ou um tipo aninhado protegido. Esta regra não relata violações de Finalize métodos devem seguir esse padrão.

Descrição da regra

Tipos de declarar membros protegidos para que tipos de herança possa acessar ou substituir o membro.Por definição, você não pode herdar de um tipo selado, que significa que protegido métodos nos tipos lacrados não pode ser chamada.

O compilador translation from VPE for Csharp emitirá um aviso para este erro.

Como corrigir violações

Para corrigir uma violação dessa regra, alterar o nível de acesso do membro para particular ou faça o tipo herdáveis.

Quando suprimir avisos

Não suprimir um aviso da regra.Deixar o tipo em seu estado corrente pode ocasionar problemas de manutenção e não oferece nenhum benefício.

Exemplo

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

Imports System

Namespace DesignLibrary

   Public NotInheritable Class BadSealedType
      Protected  Sub MyMethod
      End Sub
   End Class

End Namespace
using System;

namespace DesignLibrary
{
   public sealed class SealedClass
   {
      protected void ProtectedMethod(){}
   }
}

O tipo sealed acima declara membro protegido, que não pode ser chamado fora da classe que declara-la.

Se o método foi projetado para ser chamado por outros tipos, aumentar sua acessibilidade ao público, caso contrário, reduzir sua acessibilidade para particular.

O exemplo a seguir corrige a violação acima, aumentando a acessibilidade do método ao público.

Imports System

Namespace Samples

   Public NotInheritable Class Book
        Protected Sub Read      
    End Sub

   End Class

End Namespace
using System;

namespace Samples
{    
    public sealed class Book     
    {        
        protected void Read()        
        {        
        }    
    }
}