Aracılığıyla paylaş


CA1052: Statik tutucu türleri mühürlenmelidir

TürAdı

StaticHolderTypesShouldBeSealed

CheckId

CA1052

Kategori

Microsoft.Design

Bozan Değişiklik

Bozan

Sebep

Ortak veya korumalı tür yalnızca statik üyeleri içerir ve sealed (C# Başvurusu) (NotInheritable (Visual Basic)) değiştiricisi ile açıklanamaz.

Kural Tanımı

Bu kural sadece kalıtım için dizayn edilmeyen statik üyeleri içeren tipleri kabul eder, çünkü tip türetilmiş sınıfta geçersiz kılınabilecek hiçbir fonksiyonu sağlamıyor.Tip sealed değiştiricisi ile işaretlenen, temel tür olarak kullanılmasını engellemek üzere, kalıtım demek değildir.

İhlallerin Düzeltilmesi

Bu kuralın ihlalini düzeltmek için, sealed tipini işaretleyin.Hedeflediğiniz, .NET Framework 'un 2.0 veya önceki türü ise, daha iyi bir yaklaşım olan static tipini işaretleyin.Bu şekilde, sınıfın oluşturulmasını önlemek için özel bir kurucu bildirmek zorunda kalmaktan kurtulursunuz.

Uyarılar Ne Zaman Bastırılmalı

Bu kuraldan uyarıyı sadece kalıtım için tasarlanmışsa bastır.Bu sealed değiştiricisi yokluğunda, tipin basit tip olarak daha kullanışlı olacağı önerilir.

Bir ihlal Örneği

Tanımlama

Aşağıdaki örnek kural ihlaline neden olan bir türü gösterir.

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

Statik Değiştirici ile Düzeltme

Tanımlama

Aşağıdaki örnek, static değiştiricisi işaretlenerek kural ihlalinin nasıl düzeltileceğini gösterir.

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

İlgili Kurallar

CA1053: Statik tutucu türlerinde oluşturucular bulunmamalıdır