CA1052: A statikus tartótípusoknak statikusnak vagy nem kötelezőnek kell lenniük
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1052 |
Cím | A statikus tartótípusoknak statikusnak vagy nem elérhetőnek kell lenniük |
Kategória | Design |
A javítás kompatibilitástörő vagy nem törik | Törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Nem |
Ok
A nem absztrakt típus csak statikus tagokat tartalmaz (a lehetséges alapértelmezett konstruktortól eltérő), és nem deklarálva van a statikus vagy a megosztott módosítóval.
Ez a szabály alapértelmezés szerint csak külsőleg látható típusokat tekint meg, de ez konfigurálható.
Szabály leírása
A CA1052 szabály azt feltételezi, hogy a csak statikus tagokat tartalmazó típus nem örökölhető, mert a típus nem biztosít olyan funkciókat, amelyek felülírhatók származtatott típusban. Az öröklődni nem kívánt típust c# módosítóval kell megjelölni, static
hogy tiltsa az alaptípusként való használatát. Emellett el kell távolítani az alapértelmezett konstruktort is. A Visual Basicben az osztályt modullá kell konvertálni.
Ez a szabály nem aktiválódik olyan absztrakt osztályok vagy osztályok esetében, amelyek alaposztálysal rendelkeznek. A szabály azonban kigyullad az üres felületet támogató osztályok esetében.
Megjegyzés:
A szabály legújabb elemző implementációjában a CA1053 szabály funkcióit is magában foglalja.
Szabálysértések kijavítása
A szabály megsértésének kijavításához jelölje meg a típust static
, és távolítsa el az alapértelmezett konstruktort (C#), vagy konvertálja modullá (Visual Basic).
Mikor kell letiltani a figyelmeztetéseket?
A szabálysértéseket a következő esetekben tilthatja le:
- A típus úgy van kialakítva, hogy örökölhető legyen. A módosító hiánya
static
arra utal, hogy a típus alaptípusként hasznos. - A típus típusargumentumként használatos. A statikus típusok nem használhatók típusargumentumként.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1052
// The code that's violating the rule is on this line.
#pragma warning restore CA1052
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1052.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kód konfigurálása elemzéshez
A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.
Ezt a beállítást konfigurálhatja csak ehhez a szabályhoz, az összes szabályhoz, vagy az ebben a kategóriában (Tervezés) szereplő összes szabályhoz, amelyekre vonatkozik. További információ: Kódminőségi szabály konfigurációs beállításai.
Adott API-felületek belefoglalása
A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Példa a szabálysértésre
Az alábbi példa egy szabályt sértő típust mutat be:
public class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}
Imports System
Namespace ca1052
Public Class StaticMembers
Shared Property SomeProperty As Integer
Private Sub New()
End Sub
Shared Sub SomeMethod()
End Sub
End Class
End Namespace
Javítás a statikus módosítóval
Az alábbi példa bemutatja, hogyan háríthatja el a szabály megsértését a típus C#-módosítóval való megjelölésével static
:
public static class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}