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