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()
{
}
}
}