Sdílet prostřednictvím


CA1052: Držitel statické typy musí být zapečetěna

TypeName

StaticHolderTypesShouldBeSealed

CheckId

CA1052

Kategorie

Microsoft.Design

Narušující změna

Narušující

Příčina

Veřejný nebo chráněný typ obsahuje pouze statické členy a není deklarován pomocí modifikátoru uzavřených (C#-Reference) (Nezděditelné (Visual Basic)).

Popis pravidla

Toto pravidlo předpokládá, že typ obsahující pouze statické členy není určen k odvození, protože typ neposkytuje funkce, které lze přepsat v odvozeném typu.Typ, který není určen k odvození, by měl být označen pomocí modifikátoru sealed, aby se zakázalo jeho použití jako základního typu.

Jak vyřešit porušení

Chcete-li opravit porušení tohoto pravidla, označte typ jako sealed.Pokud cílíte na verzi rozhraní .NET Framework 2.0 nebo starší, je lepším řešením označit typ jako static.Tímto způsobem se vyhnete nutnosti deklarování privátního konstruktoru, abyste zabránili vytvoření třídy.

Kdy potlačit upozornění

Varování tohoto pravidla potlačte pouze v případě, že je typ určen k odvození.Absence modifikátoru sealed naznačuje, že je typ užitečný jako základní typ.

Příklad porušení

ms182168.collapse_all(cs-cz,VS.110).gifDescription

Následující příklad ukazuje typ, který toto pravidlo porušuje.

ms182168.collapse_all(cs-cz,VS.110).gifKód

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

Oprava pomocí modifikátoru Static

ms182168.collapse_all(cs-cz,VS.110).gifDescription

Následující příklad ukazuje, jak opravit porušení tohoto pravidla označením typu pomocí modifikátoru static.

ms182168.collapse_all(cs-cz,VS.110).gifKód

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

Související pravidla

CA1053: Držitel statické typy by neměl mít konstruktory