Share via


CA1710: Id's moeten het juiste achtervoegsel hebben

Eigenschappen Weergegeven als
Regel-id CA1710
Titel Id's moeten het juiste achtervoegsel hebben
Categorie Naamgeving
Oplossing is brekend of niet-brekend Breken
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

Een id heeft niet het juiste achtervoegsel.

Deze regel kijkt standaard alleen naar extern zichtbare id's, maar dit kan worden geconfigureerd.

Beschrijving van regel

Standaard hebben de namen van typen die bepaalde basistypen uitbreiden of bepaalde interfaces implementeren, of typen die zijn afgeleid van deze typen, een achtervoegsel dat is gekoppeld aan het basistype of de basisinterface.

Naamconventies bieden een gemeenschappelijk uiterlijk voor bibliotheken die gericht zijn op de algemene taalruntime. Dit vermindert de leercurve die vereist is voor nieuwe softwarebibliotheken en verhoogt het vertrouwen van klanten dat de bibliotheek is ontwikkeld door iemand die expertise heeft in het ontwikkelen van beheerde code.

De volgende tabel bevat de basistypen en interfaces die aan achtervoegsels zijn gekoppeld.

Basistype/interface Achtervoegsel
System.Attribute Kenmerk
System.EventArgs EventArgs
System.Exception Uitzondering
System.Collections.ICollection Verzameling
System.Collections.IDictionary Woordenlijst
System.Collections.IEnumerable Verzameling
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> Woordenlijst
System.Collections.Queue Verzameling of wachtrij
System.Collections.Stack Verzameling of stack
System.Collections.Generic.ICollection<T> Verzameling
System.Collections.Generic.IDictionary<TKey,TValue> Woordenlijst
System.Data.DataSet Dataset
System.Data.DataTable Verzameling of gegevenstabel
System.IO.Stream Stream
System.Security.IPermission Machtiging
System.Security.Policy.IMembershipCondition Conditie
Een gemachtigde voor een gebeurtenis-handler. EventHandler

Typen die ICollection een gegeneraliseerde gegevensstructuur implementeren en zijn, zoals een woordenlijst, stack of wachtrij, zijn toegestane namen die zinvolle informatie geven over het beoogde gebruik van het type.

Typen die worden geïmplementeerd ICollection en een verzameling specifieke items bevatten namen die eindigen op het woord 'Verzameling'. Een verzameling Queue objecten heeft bijvoorbeeld de naam QueueCollection. Het achtervoegsel Verzameling geeft aan dat de leden van de verzameling kunnen worden geïnventariseerd met behulp van de foreach instructie (For Each in Visual Basic).

Typen die namen implementeren IDictionary of IReadOnlyDictionary<TKey,TValue> hebben die eindigen op het woord Woordenlijst, zelfs als het type ook wordt geïmplementeerd IEnumerable of ICollection. Met de naamconventies voor het achtervoegsel 'Verzameling' en 'Woordenlijst' kunnen gebruikers onderscheid maken tussen de volgende twee opsommingspatronen.

Typen met het achtervoegsel 'Verzameling' volgen dit opsommingspatroon.

foreach(SomeType x in SomeCollection) { }

Typen met het achtervoegsel Woordenlijst volgen dit opsommingspatroon.

foreach(SomeType x in SomeDictionary.Values) { }

Een DataSet object bestaat uit een verzameling DataTable objecten, die onder andere bestaat uit verzamelingen en System.Data.DataRow System.Data.DataColumn objecten. Deze verzamelingen implementeren ICollection via de basisklasse System.Data.InternalDataCollectionBase .

Schendingen oplossen

Wijzig de naam van het type zodat het achtervoegsel met de juiste term wordt gebruikt.

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing te onderdrukken om het achtervoegsel 'Verzameling' te gebruiken als het type een gegeneraliseerde gegevensstructuur is die kan worden uitgebreid of die een willekeurige set verschillende items bevat. In dit geval kan een naam die zinvolle informatie biedt over de implementatie, prestaties of andere kenmerken van de gegevensstructuur zinvol zijn (bijvoorbeeld BinaryTree). In gevallen waarin het type een verzameling van een specifiek type vertegenwoordigt (bijvoorbeeld StringCollection), onderdrukt u geen waarschuwing van deze regel omdat het achtervoegsel aangeeft dat het type kan worden geïnventariseerd met behulp van een foreach instructie.

Voor andere achtervoegsels onderdrukt u geen waarschuwing van deze regel. Met het achtervoegsel kan het beoogde gebruik worden weergegeven in de naam van het type.

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

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.CA1710.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Code configureren om te analyseren

Gebruik de volgende opties om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.

U kunt deze opties configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (naamgeving) 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

Indirecte basistypen uitsluiten

U kunt configureren of indirecte basistypen van de regel moeten worden uitgesloten. Deze optie is standaard ingesteld op true, waardoor de analyse wordt beperkt tot het huidige basistype.

dotnet_code_quality.CA1710.exclude_indirect_base_types = false

Aanvullende vereiste achtervoegsels

U kunt aanvullende vereiste achtervoegsels opgeven of het gedrag van bepaalde in code vastgelegde achtervoegsels overschrijven door het volgende sleutel-waardepaar toe te voegen aan een .editorconfig-bestand in uw project:

dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]

Scheid meerdere waarden met een | teken. Typen kunnen worden opgegeven in een van de volgende indelingen:

  • Alleen de naam van het type (bevat alle typen met de naam, ongeacht het type of de naamruimte).
  • Volledig gekwalificeerde namen in de documentatie-id-indeling van het symbool met een optioneel T: voorvoegsel.

Voorbeelden:

Optiewaarde Samenvatting
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class Alle typen die overnemen van 'MyClass' zijn vereist om het achtervoegsel 'Klasse' te hebben.
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path Alle typen die overnemen van 'MyClass' zijn vereist om het achtervoegsel 'Class' te hebben EN alle typen die 'MyNamespace.IPath' implementeren, moeten het achtervoegsel 'Pad' hebben.
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} Overschrijft ingebouwde achtervoegsels. In dit geval zijn alle typen die 'IDataReader' implementeren, niet meer vereist om te eindigen op 'Verzameling'.

CA1711: Id's mogen geen onjuist achtervoegsel hebben

Zie ook