Megosztás a következőn keresztül:


CA1012: Az absztrakt típusok nem lehetnek nyilvános konstruktorok

Tulajdonság Érték
Szabályazonosító CA1012
Cím Az absztrakt típusok nem lehetnek nyilvános konstruktorok
Kategória Design
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A típus absztrakt, és nyilvános konstruktorsal rendelkezik.

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

Az absztrakt típusok konstruktorai csak származtatott típusok használatával hívhatók meg. Mivel a nyilvános konstruktorok egy típusú példányokat hoznak létre, és nem hozhatók létre absztrakt típusú példányok, a nyilvános konstruktort tartalmazó absztrakt típus helytelenül lett megtervezve.

Szabálysértések kijavítása

A szabály megsértésének kijavításához tegye védetté a konstruktort, vagy ne deklarálja a típust absztraktként.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését. Az absztrakt típus nyilvános konstruktorsal rendelkezik.

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 CA1012
// The code that's violating the rule is on this line.
#pragma warning restore CA1012

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.CA1012.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 következő kódrészlet olyan absztrakt típust tartalmaz, amely megsérti ezt a szabályt.

' Violates this rule      
Public MustInherit Class Book

    Public Sub New()
    End Sub

End Class
// Violates this rule
public abstract class Book
{
    public Book()
    {
    }
}

Az alábbi kódrészlet kijavítja az előző szabálysértést a konstruktor publicprotectedakadálymentességének módosításával.

// Does not violate this rule
public abstract class Book
{
    protected Book()
    {
    }
}
' Violates this rule      
Public MustInherit Class Book

    Protected Sub New()
    End Sub

End Class