Share via


CA1058: A típusok nem terjeszthetik ki bizonyos alaptípusokat

Tulajdonság Érték
Szabályazonosító CA1058
Cím A típusok nem terjeszthetik ki bizonyos alaptípusokat
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 típus az alábbi alaptípusok egyikét bővíti ki:

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 kivételeknek a névtér egyik System alosztályából System.Exception kell származnia.

Ne hozzon létre alosztályt XmlDocument , ha xml-nézetet szeretne létrehozni egy mögöttes objektummodellről vagy adatforrásról.

Nem általános gyűjtemények

Általános gyűjtemények használata és/vagy kiterjesztése, amikor csak lehetséges. Ne terjesszen ki nem általános gyűjteményeket a kódban, kivéve, ha korábban szállította.

Példák helytelen használatra

public class MyCollection : CollectionBase
{
}

public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}

Példák a helyes használatra

public class MyCollection : Collection<T>
{
}

public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}

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

A szabály megsértésének kijavításához a típust egy másik alaptípusból vagy általános gyűjteményből származtathatja.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését a szabály megsértése esetén ApplicationException. Nyugodtan el lehet tiltani a szabályból származó figyelmeztetést a szabály megsértése esetén XmlDocument. A nem általános gyűjteményre vonatkozó figyelmeztetést nyugodtan letilthatja, ha a kód korábban megjelent.

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

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.CA1058.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