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