Compartir a través de


CA1052: Los tipos titulares estáticos deben ser sealed

Nombre de tipo

StaticHolderTypesShouldBeSealed

Identificador de comprobación

CA1052

Categoría

Microsoft.Design

Cambio problemático

Causa

Un tipo público o protegido sólo contiene miembros estáticos y no se declara con el modificador sealed (Referencia de C#) (NotInheritable (Visual Basic)).

Descripción de la regla

Esta regla supone que un tipo que sólo contiene miembros estáticos no está diseñado para heredarse, porque el tipo no proporciona ninguna funcionalidad que pueda reemplazarse con un tipo derivado. Un tipo que no está diseñado para heredarse debería marcarse con el modificador sealed para permitir su uso como tipo base.

Cómo corregir infracciones

Para corregir una infracción de esta regla, marque el tipo como sealed. Si utiliza como destino .NET Framework o una versión anterior, es mejor marcar el tipo como static. De esta manera, evita tener que declarar un constructor privado para evitar que se cree la clase.

Cuándo suprimir advertencias

Suprima una advertencia de esta regla sólo si el tipo está diseñado para poder heredarse. La ausencia del modificador sealed sugiere que el tipo sea útil como tipo base.

Ejemplo de infracción

Descripción

El siguiente ejemplo muestra un tipo que infringe la regla.

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

Corregir con el modificador estático

Descripción

El ejemplo siguiente muestra cómo corregir una infracción de esta regla marcando el tipo con el modificador 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();
}

Reglas relacionadas

CA1053: Los tipos titulares estáticos no deben tener constructores