Statische Haltertypen sollten versiegelt sein

     TypeName

StaticHolderTypesShouldBeSealed

CheckId

CA1052

Kategorie

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) 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 soll, sollte mit dem sealed-Modifizierer gekennzeichnet werden, damit er nicht als Basistyp verwendet werden kann.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, kennzeichnen Sie den Typ als sealed.

Warnungsausschluss

Schließen Sie eine Warnung dieser Regel nur dann aus, wenn der Typ geerbt werden soll. Die Abwesenheit des sealed-Modifizierers impliziert, dass der Typ als Basistyp verwendet werden kann.

Beispiel

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

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

Verwandte Regeln

Typen, die statische Member enthalten, sollten keine Konstruktoren aufweisen