CA1047: Ne deklaráljon védett tagokat lezárt típusok esetén
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1047 |
Cím | Ne deklaráljon védett tagokat lezárt típusok esetén |
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 | Javaslatként |
Ok
A nyilvános típus (NotInheritable
a sealed
Visual Basicben) védett tagot vagy védett beágyazott típust deklarál. Ez a szabály nem jelenti a metódusok megsértéseinek Finalize jelentését, amelyeknek ezt a mintát kell követnie.
Szabály leírása
A típusok védett tagokat deklarálnak, hogy az öröklő típusok elérhessék vagy felülbírálhassák a tagot. Definíció szerint nem örökölhet lezárt típusból, ami azt jelenti, hogy a lezárt típusok védett módszerei nem hívhatók meg.
A C#-fordító a CA1047 helyett a CS0628 figyelmeztetést bocsát ki ebben a helyzetben.
Szabálysértések kijavítása
A szabály megsértésének kijavításához módosítsa a tag hozzáférési szintjét privátra, vagy örökölhetővé tegye a típust.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa el a szabály figyelmeztetését. Ha a típust a jelenlegi állapotában hagyja, karbantartási problémákat okozhat, és nem biztosít semmilyen előnyt.
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
Az alábbi példa egy olyan típust mutat be, amely megsérti ezt a szabályt.
public sealed class SealedClass
{
protected void ProtectedMethod(){}
}
Public NotInheritable Class BadSealedType
Protected Sub MyMethod
End Sub
End Class
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: