Udostępnij za pośrednictwem


CA1052: Typy obsługi statycznej powinny być zapieczętowane

TypeName

StaticHolderTypesShouldBeSealed

CheckId

CA1052

Kategoria

Microsoft.Design

Zmiana kluczowa

Kluczowa

Przyczyna

Typ publiczny lub chroniony zawiera tylko elementy statyczne i nie jest zadeklarowany za pomocą modyfikatora sealed (odwołanie w C#) (NotInheritable (Visual Basic)).

Opis reguły

Reguła zakłada, że typ, który zawiera tylko statyczne elementy członkowskie nie jest zaprojektowany do dziedziczenia, ponieważ taki typ nie dostarcza żadnych funkcji, które mogą zostać zastąpione w typie pochodnym.Typ, który nie jest przeznaczony do dziedziczenia, powinien zostać oznaczony za pomocą modyfikatora sealed, aby zakazać używania go jako typu podstawowego.

Jak naprawić naruszenia

Aby naprawić naruszenia tej reguły, oznacz typ jako sealed.Jeśli twoja docelowa platforma to .NET Framework 2.0 lub wcześniejszy, lepszym rozwiązaniem jest oznaczyć typ jako static.Dzięki temu, unikniesz deklarowania prywatnego konstruktora, aby zapobiec utworzeniu klasy.

Kiedy pominąć ostrzeżenia

Pomiń ostrzeżenie dotyczące tej reguły, tylko jeśli typ jest zaprojektowany do dziedziczenia.Brak modyfikatora sealed sugeruje, że typ jest użyteczny jako typ podstawowy.

Przykład naruszenia

Opis

Poniższy przykład pokazuje typ, który narusza regułę.

Kod

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

Naprawa za pomocą modyfikatora static

Opis

Poniższy przykład pokazuje, w jaki sposób naprawić naruszenie tej reguły, oznaczając typ za pomocą modyfikatora static.

Kod

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

Powiązane reguły

CA1053: Typy obsługi statycznej nie powinny mieć konstruktorów