CA1000: Geen statische leden declareren voor algemene typen
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1000 |
Titel | Statische leden niet declareren voor algemene typen |
Categorie | Ontwerpen |
Oplossing is brekend of niet-brekend | Breken |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
Een algemeen type bevat een static
lid (Shared
in Visual Basic).
Deze regel kijkt standaard alleen naar extern zichtbare typen, maar dit kan worden geconfigureerd.
Beschrijving van regel
Wanneer een static
lid van een algemeen type wordt aangeroepen, moet het typeargument worden opgegeven voor het type. Wanneer een algemeen exemplaarlid dat geen ondersteuning biedt voor deductie wordt aangeroepen, moet het typeargument worden opgegeven voor het lid. De syntaxis voor het opgeven van het typeargument in deze twee gevallen is verschillend en eenvoudig te verwarren, zoals de volgende aanroepen demonstreren:
' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()
' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();
// Generic instance method that does not support inference.
someObject.GenericMethod<int>();
Over het algemeen moeten beide declaraties worden vermeden, zodat het typeargument niet hoeft te worden opgegeven wanneer het lid wordt aangeroepen. Dit resulteert in een syntaxis voor het aanroepen van leden in generics die niet verschillen van de syntaxis voor niet-generieken.
Schendingen oplossen
Als u een schending van deze regel wilt oplossen, verwijdert u het statische lid of wijzigt u dit in een exemplaarlid.
Wanneer waarschuwingen onderdrukken
Een waarschuwing van deze regel niet onderdrukken. Het bieden van generieken in een syntaxis die gemakkelijk te begrijpen en te gebruiken is, vermindert de tijd die nodig is om te leren en het acceptatiepercentage van nieuwe bibliotheken te verhogen.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1000
// The code that's violating the rule is on this line.
#pragma warning restore CA1000
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1000.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Code configureren om te analyseren
Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (ontwerp) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt instellen op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Gerelateerde regels
- CA1005: Vermijd overmatige parameters voor algemene typen
- CA1010: Verzamelingen moeten algemene interface implementeren
- CA1002: algemene lijsten niet beschikbaar maken
- CA1003: Algemene gebeurtenis-handler-exemplaren gebruiken