Freigeben über


CA1052: Statische Haltertypen sollten versiegelt sein

TypeName

StaticHolderTypesShouldBeSealed

CheckId

CA1052

Kategorie (Category)

Microsoft.Design

Unterbrechende Änderung

Breaking

Ursache

Ein öffentlicher oder geschützter Typ enthält nur statische Member und ist nicht mit dem sealed (C#-Referenz)-Modifzierer (NotInheritable (Visual Basic)) deklariert.

Regelbeschreibung

Diese Regel setzt voraus, dass ein Typ, der nur statische Member enthält, nicht für die Vererbung konzipiert ist, da der Typ keine Funktionen angibt, die in einem abgeleiteten Typ überschrieben werden können.Ein Typ, der nicht geerbt werden, muss mit dem sealed-Modifizierer markiert werden, um seine Verwendung als Basistyp zu verhindern.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, kennzeichnen Sie den Typ als sealed.Wenn Sie für .NET Framework 2.0 oder früher entwickeln, ist die Markierung des Typs als static vorzuziehen.Auf diese Weise müssen Sie keinen privaten Konstruktor deklarieren, um die Erstellung der Klasse zu verhindern.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie eine Warnung dieser Regel nur dann, wenn der Typ für die Vererbung konzipiert ist.Die Abwesenheit des sealed-Modifizierers impliziert, dass der Typ als Basistyp verwendet werden kann.

Beispiel für einen Verstoß

Beschreibung

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen die Regel verstößt.

Code

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

Korrektur mit dem static-Modifizierer

Beschreibung

Das folgende Beispiel zeigt, wie eine Verletzung dieser Regeln korrigiert wird, indem der Typ mit dem static-Modifizierer markiert wird.

Code

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

Verwandte Regeln

CA1053: Statische Haltertypen sollten keine Konstruktoren aufweisen