Dela via


CA1005: Undvik överdrivna parametrar för generiska typer

Property Värde
Regel-ID CA1005
Title Undvik överdrivna parametrar för generiska typer
Kategori Designa
Korrigeringen är icke-bakåtkompatibel Brott
Aktiverad som standard i .NET 9 Nej

Orsak

En externt synlig allmän typ har fler än två typparametrar.

Som standard tittar den här regeln bara på externt synliga typer, men det kan konfigureras.

Regelbeskrivning

Ju fler typparametrar en allmän typ innehåller, desto svårare är det att veta och komma ihåg vad varje typparameter representerar. Det är vanligtvis uppenbart med en typparameter, som i List<T>, och i vissa fall med två typparametrar, som i Dictionary<TKey, TValue>. Om det finns fler än två typparametrar blir svårigheten för stor för de flesta användare (till exempel TooManyTypeParameters<T, K, V> I C# eller TooManyTypeParameters(Of T, K, V) Visual Basic).

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln ändrar du designen så att den inte använder fler än två typparametrar.

När du ska ignorera varningar

Utelämna inte en varning från den här regeln om inte designen absolut kräver fler än två typparametrar. Att tillhandahålla generiska data i en syntax som är lätt att förstå och använda minskar den tid som krävs för att lära sig och ökar implementeringsgraden för nya bibliotek.

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

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

CA1010: Samlingar bör implementera generiskt gränssnitt

CA1000: Deklarera inte statiska medlemmar på generiska typer

CA1002: Exponera inte allmänna listor

CA1003: Använda allmänna händelsehanterarinstanser

Se även