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


CA1700: Ne nevezze el a "Fenntartott" enumerálási értékeket

Tulajdonság Érték
Szabályazonosító CA1700
Cím Ne nevezze el a "Fenntartott" enumerálási értékeket
Kategória Elnevezés
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

Az enumerálási tag neve tartalmazza a "reserved" szót.

Szabály leírása

Ez a szabály azt feltételezi, hogy a "reserved" nevet tartalmazó enumerálási tag jelenleg nem használatos, hanem egy helyőrző, amelyet egy későbbi verzióban át kell nevezni vagy el kell távolítani. A tagok átnevezése vagy eltávolítása kompatibilitástörő változás. Nem várhatja el, hogy a felhasználók figyelmen kívül hagyják a tagokat csak azért, mert a neve "fenntartott", és nem támaszkodhat arra, hogy a felhasználók elolvassák vagy betartsák a dokumentációt. Emellett mivel a fenntartott tagok objektumböngészőkben és intelligens integrált fejlesztési környezetekben jelennek meg, zavart okozhatnak azzal kapcsolatban, hogy mely tagokat használják ténylegesen.

Fenntartott tag használata helyett adjon hozzá egy új tagot az enumeráláshoz a jövőbeli verzióban. A legtöbb esetben az új tag hozzáadása nem jelent kompatibilitástörő változást, feltéve, hogy az összeadás nem eredményezi az eredeti tagok értékeinek változását.

Korlátozott számú esetben a tag hozzáadása akkor is kompatibilitástörő változás, ha az eredeti tagok megtartják eredeti értékeiket. Az új tagot elsősorban nem lehet visszaadni a meglévő kódútvonalakból anélkül, hogy a (Visual Basicben) utasítást switchSelect használó hívók a teljes taglistát felölelő visszatérési értékre hivatkoznak, és az alapértelmezett esetben kivételt eredményeznek. Másodlagos probléma, hogy előfordulhat, hogy az ügyfélkód nem kezeli az olyan tükröződési módszerek viselkedésének változását, mint a System.Enum.IsDefined. Ennek megfelelően, ha az új tagot vissza kell adni a meglévő metódusokból, vagy egy ismert alkalmazáskompatibilitás a rossz tükröződési használat miatt következik be, az egyetlen nem törhető megoldás a következő:

  1. Adjon hozzá egy új számbavételt, amely az eredeti és az új tagokat tartalmazza.

  2. Jelölje meg az eredeti enumerálást az System.ObsoleteAttribute attribútummal.

    Kövesse ugyanezt az eljárást az eredeti felsorolást közzétesző külsőleg látható típusok vagy tagok esetében is.

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

A szabály megsértésének kijavításához távolítsa el vagy nevezze át a tagot.

Mikor kell letiltani a figyelmeztetéseket?

Biztonságosan letilthatja a szabály figyelmeztetését egy jelenleg használt tag vagy a korábban kiszállított kódtárak esetében.

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

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.CA1700.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 erre a szabályra, az összes szabályra, vagy az ebben a kategóriában (elnevezés) szereplő összes szabályra, 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

CA2217: Ne jelölje meg a számokat a FlagsAttribute használatával

CA1712: A típusnévvel rendelkező enumerálási értékek előtagja nem

CA1028: Az enumerálási tárolónak Int32-nek kell lennie

CA1008: Az enumerálásnak nulla értékkel kell rendelkeznie

CA1027: Számjelek megjelölése FlagsAttribute használatával