CA1058: Typer bör inte utöka vissa bastyper
Property | Värde |
---|---|
Regel-ID | CA1058 |
Title | Typer bör inte utöka vissa bastyper |
Kategori | Designa |
Korrigeringen är icke-bakåtkompatibel | Brott |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En typ utökar en av följande bastyper:
- System.ApplicationException
- System.Xml.XmlDocument
- System.Collections.CollectionBase
- System.Collections.DictionaryBase
- System.Collections.Queue
- System.Collections.ReadOnlyCollectionBase
- System.Collections.SortedList
- System.Collections.Stack
Som standard tittar den här regeln bara på externt synliga typer, men det kan konfigureras.
Regelbeskrivning
Undantag bör härledas från System.Exception eller någon av dess underklasser i System namnområdet.
Skapa inte en underklass för XmlDocument om du vill skapa en XML-vy över en underliggande objektmodell eller datakälla.
Icke-generiska samlingar
Använd och/eller utöka allmänna samlingar när det är möjligt. Utöka inte icke-generiska samlingar i koden, såvida du inte har skickat den tidigare.
Exempel på felaktig användning
public class MyCollection : CollectionBase
{
}
public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}
Exempel på korrekt användning
public class MyCollection : Collection<T>
{
}
public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}
Så här åtgärdar du överträdelser
Åtgärda ett brott mot den här regeln genom att härleda typen från en annan bastyp eller en allmän samling.
När du ska ignorera varningar
Ignorera inte en varning från den här regeln om överträdelser om ApplicationException. Det är säkert att ignorera en varning från den här regeln om överträdelser om XmlDocument. Det är säkert att ignorera en varning om en icke-generisk samling om koden släpptes tidigare.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1058
// The code that's violating the rule is on this line.
#pragma warning restore CA1058
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1058.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Konfigurera kod för analys
Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.
Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som gäller för eller för alla regler i den här kategorin (design) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.
Inkludera specifika API-ytor
Du kan konfigurera vilka delar av kodbasen som ska köras med den här regeln baserat på deras tillgänglighet. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:
dotnet_code_quality.CAXXXX.api_surface = private, internal