CA1052: os tipos de suporte estático devem ser lacrados
TypeName |
StaticHolderTypesShouldBeSealed |
CheckId |
CA1052 |
Categoria |
Microsoft.Design |
Alteração Significativa |
Quebra |
Causa
Um público ou um tipo protegido contêm apenas membros estáticos e não são declarados com o modificador de sealed (Referência de C#) (NotInheritable (Visual Basic)).
Descrição da Regra
Esta regra supõe que um tipo que contém apenas membros estáticos não é criado para ser herdado, como o tipo não fornece nenhuma funcionalidade que pode ser substituída em um tipo derivado.Um tipo que não é significado ser herdado deve ser marcado com o modificador de sealed para impedir seu uso como um tipo de base.
Como Corrigir Violações
Para corrigir uma violação desta regra, marque o tipo como sealed.Se você estiver destino .NET Framework 2,0 ou menos, uma abordagem melhor é marcar o tipo como static.Assim, você evita a necessidade de declarar um construtor particular para impedir que a classe foi criada.
Quando Suprimir Alertas
Suprima um aviso desta regra somente se o tipo é projetado para ser herdado.A ausência de modificador de sealed sugere que o tipo é útil como um tipo de base.
Exemplo de uma Violação
Descrição
O exemplo a seguir mostra um tipo que viola a regra.
Código
Imports System
Namespace DesignLibrary
Public Class StaticMembers
Private Shared someField As Integer
Shared Property SomeProperty As Integer
Get
Return someField
End Get
Set
someField = Value
End Set
End Property
Private Sub New()
End Sub
Shared Sub SomeMethod()
End Sub
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class StaticMembers
{
static int someField;
public static int SomeProperty
{
get
{
return someField;
}
set
{
someField = value;
}
}
StaticMembers() {}
public static void SomeMethod() {}
}
}
using namespace System;
namespace DesignLibrary
{
public ref class StaticMembers
{
static int someField;
StaticMembers() {}
public:
static property int SomeProperty
{
int get()
{
return someField;
}
void set(int value)
{
someField = value;
}
}
static void SomeMethod() {}
};
}
Correção com o modificador estático
Descrição
O exemplo a seguir mostra como corrigir uma violação desta regra marcando o tipo com o modificador de static .
Código
using System;
namespace DesignLibrary
{
public static class StaticMembers
{
private static int someField;
public static int SomeProperty
{
get { return someField; }
set { someField = value; }
}
public static void SomeMethod()
{
}
public static event SomeDelegate SomeEvent;
}
public delegate void SomeDelegate();
}
Regras Relacionadas
CA1053: os tipos de suporte estático não devem ter construtores