Compartilhar via


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