Share via


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