CA1052: Statický vlastník typů by měl být zapečetěný
TypeName |
StaticHolderTypesShouldBeSealed |
CheckId |
CA1052 |
Kategorie |
Microsoft.Design |
Narušující změna |
Narušující |
Příčina
Veřejný nebo chráněný typ obsahuje pouze statické členy a není deklarován pomocí modifikátoru sealed (Referenční dokumentace jazyka C#) (NotInheritable (Visual Basic)).
Popis pravidla
Toto pravidlo předpokládá, že typ obsahující pouze statické členy není určen k odvození, protože typ neposkytuje funkce, které lze přepsat v odvozeném typu.Typ, který není určen k odvození, by měl být označen pomocí modifikátoru sealed, aby se zakázalo jeho použití jako základního typu.
Jak vyřešit porušení
Chcete-li opravit porušení tohoto pravidla, označte typ jako sealed.Pokud cílíte na verzi rozhraní .NET Framework 2.0 nebo starší, je lepším řešením označit typ jako static.Tímto způsobem se vyhnete nutnosti deklarování privátního konstruktoru, abyste zabránili vytvoření třídy.
Kdy potlačit upozornění
Varování tohoto pravidla potlačte pouze v případě, že je typ určen k odvození.Absence modifikátoru sealed naznačuje, že je typ užitečný jako základní typ.
Příklad porušení
Description
Následující příklad ukazuje typ, který toto pravidlo porušuje.
Kód
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() {}
};
}
Oprava pomocí modifikátoru Static
Description
Následující příklad ukazuje, jak opravit porušení tohoto pravidla označením typu pomocí modifikátoru static.
Kód
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();
}