Udostępnij za pośrednictwem


CA1052: Powinna być zaplombowana typy statycznej posiadacza

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 zamknięte (C# odniesienia) (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

ms182168.collapse_all(pl-pl,VS.110).gifOpis

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

ms182168.collapse_all(pl-pl,VS.110).gifKod

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

ms182168.collapse_all(pl-pl,VS.110).gifOpis

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

ms182168.collapse_all(pl-pl,VS.110).gifKod

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: Typów statycznych posiadacz nie powinny mieć konstruktorów