CA1052 : Les types de conteneurs statiques doivent être sealedCA1052: Static holder types should be sealed

TypeNameTypeName StaticHolderTypesShouldBeSealedStaticHolderTypesShouldBeSealed
CheckIdCheckId CA1052CA1052
CategoryCategory Microsoft.DesignMicrosoft.Design
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Un type public ou protégé contient uniquement des membres statiques et n’est pas déclaré avec le sealed (NotInheritable) modificateur.A public or protected type contains only static members and is not declared with the sealed (NotInheritable) modifier.

Description de la règleRule Description

Cette règle suppose qu’un type qui contient uniquement des membres statiques n’est pas conçu pour être hérité, car le type ne fournit pas toutes les fonctionnalités qui peuvent être substituées dans un type dérivé.This rule assumes that a type that contains only static members is not designed to be inherited, because the type does not provide any functionality that can be overridden in a derived type. Un type qui n’est pas destiné à être hérité doit être marqué avec le sealed modificateur d’empêcher son utilisation comme type de base.A type that is not meant to be inherited should be marked with the sealed modifier to prohibit its use as a base type.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, marquez le type comme sealed.To fix a violation of this rule, mark the type as sealed. Si vous ciblez .NET Framework.NET Framework 2.0 ou version ultérieure, une meilleure approche consiste à marquer le type comme static.If you are targeting .NET Framework.NET Framework 2.0 or later, a better approach is to mark the type as static. De cette manière, vous évitez d’avoir à déclarer un constructeur privé pour empêcher la création de la classe.In this manner, you avoid having to declare a private constructor to prevent the class from being created.

Quand supprimer les avertissementsWhen to Suppress Warnings

Supprimer un avertissement de cette règle uniquement si le type est conçu pour être héritée.Suppress a warning from this rule only if the type is designed to be inherited. L’absence de la sealed modificateur suggère que le type est utile en tant que type de base.The absence of the sealed modifier suggests that the type is useful as a base type.

Exemple de ViolationExample of a Violation

DescriptionDescription

L’exemple suivant montre un type qui enfreint la règle.The following example shows a type that violates the rule.

CodeCode

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

Résoudre avec le modificateur statiqueFix with the Static Modifier

DescriptionDescription

L’exemple suivant montre comment la corriger une violation de cette règle en marquant le type avec la static modificateur.The following example shows how to fix a violation of this rule by marking the type with the static modifier.

CodeCode

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

CA1053 : Les types de conteneurs statiques ne doivent pas comporter de constructeurCA1053: Static holder types should not have constructors