Detentor estático tipos devem ser sealed
TypeName |
StaticHolderTypesShouldBeSealed |
CheckId |
CA1052 |
Category (Categoria) |
Microsoft.Design |
Quebrando alterar |
Quebrando |
Causa
Um tipo público ou protegido contém apenas membros estático e não é declarado com o sealed (referência C#) (NotInheritable) modificadora.
Descrição da regra
Esta regra pressupõe que um tipo que contém membros estático apenas não foi projetado para ser herdadas, como o tipo não oferece nenhuma funcionalidade pode ser substituída em um tipo derivado.Um tipo que não deve ser herdado deve ser marcado com o sealed modificador para permitir seu uso sistema autônomo um tipo de base.
Como corrigir violações
Para corrigir uma violação dessa regra, marque o tipo sistema autônomo sealed. Se o objetivo for o .NET Framework 2.0 ou anterior, uma abordagem melhor é marcar o tipo sistema autônomo static. Dessa forma, você evitar ter que que 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 for criado para ser herdada.A ausência do sealed modificador sugere que o tipo é útil sistema autônomo 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() {}
};
}
Corrigir com o modificador estático
Descrição
O exemplo a seguir mostra como corrigir uma violação dessa 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();
}