CA1052: Tipos de portador estático deverá ser lacrados.
TypeName |
StaticHolderTypesShouldBeSealed |
CheckId |
CA1052 |
<strong>Categoria</strong> |
Microsoft.design |
Alteração significativa |
Quebrando |
Causa
Um tipo de público ou protegido contém apenas membros estáticos e não é declarado com o sealed (C# Reference) (NotInheritable (Visual Basic)) modificadora.
Descrição da regra
Esta regra pressupõe que um tipo que contém apenas membros estáticos não foi projetado para ser herdada, porque o tipo não oferece nenhuma funcionalidade que pode ser substituída em um tipo derivado. Um tipo que não pretende ser herdadas deve ser marcado com o sealed modificador para permitir seu uso como um tipo base.
Como corrigir violações
Para corrigir uma violação desta regra, marcar o tipo de sealed. Se você estiver direcionando .NET Framework 2.0 ou anterior, uma abordagem melhor é marcar o tipo de static. Dessa maneira, você evitar declarar um construtor particular para impedir que a classe que está sendo criado.
Quando suprimir avisos
Elimina um aviso esta regra somente se o tipo é projetado para ser herdada. A ausência de sealed modificador sugere que o tipo é útil como um tipo 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() {}
};
}
Corrigir com o modificador estático
Descrição
O exemplo a seguir mostra como corrigir uma violação desta regra, marcando o tipo com o static modificador.
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: Tipos de portador estático não devem ter construtores