Partilhar via


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

Regras relacionadas

Tipos detentor estático não devem ter construtores