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