CA1002: Exponera inte allmänna listor
Property | Värde |
---|---|
Regel-ID | CA1002 |
Title | Exponera inte allmänna listor |
Kategori | Designa |
Korrigeringen är icke-bakåtkompatibel | Brott |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En typ innehåller en externt synlig medlem som är en System.Collections.Generic.List<T> typ, returnerar en List<T> typ eller vars signatur innehåller en List<T> parameter.
Som standard tittar den här regeln bara på externt synliga typer, men det kan konfigureras.
Regelbeskrivning
System.Collections.Generic.List<T> är en allmän samling som är utformad för prestanda och inte arv. List<T> innehåller inte virtuella medlemmar som gör det lättare att ändra beteendet för en ärvd klass. Följande allmänna samlingar är utformade för arv och bör exponeras i stället List<T>för .
Så här åtgärdar du överträdelser
Om du vill åtgärda ett brott mot den här regeln ändrar du System.Collections.Generic.List<T> typen till en av de generiska samlingar som är utformade för arv.
När du ska ignorera varningar
Utelämna inte en varning från den här regeln om inte sammansättningen som genererar den här varningen inte är avsedd att vara ett återanvändbart bibliotek. Det skulle till exempel vara säkert att utelämna den här varningen i ett prestandajusterat program där en prestandaförmån har vunnits från användningen av allmänna listor.
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 CA1002
// The code that's violating the rule is on this line.
#pragma warning restore CA1002
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.CA1002.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
Relaterade regler
CA1005: Undvik överdrivna parametrar för generiska typer
CA1010: Samlingar bör implementera generiskt gränssnitt
CA1000: Deklarera inte statiska medlemmar på generiska typer
CA1003: Använda allmänna händelsehanterarinstanser