Delen 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 Attribute
System.EventArgs EventArgs
System.Exception Exception
System.Collections.ICollection Collection
System.Collections.IDictionary Dictionary
System.Collections.IEnumerable Collection
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> Dictionary
System.Collections.Queue Collection of Queue
System.Collections.Stack Collection of Stack
System.Collections.Generic.ICollection<T> Collection
System.Collections.Generic.IDictionary<TKey,TValue> Dictionary
System.Data.DataSet DataSet
System.Data.DataTable Collection of DataTable
System.IO.Stream Stream
System.Security.IPermission Permission
System.Security.Policy.IMembershipCondition Condition
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 ICollection implementeren en een verzameling specifieke items bevatten namen die eindigen op het woord Collection. Een verzameling van Queue objecten heeft bijvoorbeeld de naam QueueCollection. Het achtervoegsel Collection geeft aan dat de leden van de verzameling kunnen worden geïnventariseerd met behulp van de instructie foreach (For Each in Visual Basic).

Typen die IDictionary of IReadOnlyDictionary<TKey,TValue> implementeren, hebben namen die eindigen op het woord Dictionary, zelfs als het type ook IEnumerable of ICollectionimplementeert. Met de naamconventies voor Collection en Dictionary achtervoegsel kunnen gebruikers onderscheid maken tussen de volgende twee opsommingspatronen.

Typen met het achtervoegsel Collection volgen dit opsommingspatroon.

foreach(SomeType x in SomeCollection) { }

Typen met het achtervoegsel Dictionary 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.DataColumnSystem.Data.DataRow 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 voor het gebruik van het Collection achtervoegsel 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 ze van toepassing zijn, of voor alle regels in deze categorie (Naamgeving) waarop ze van toepassing zijn. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.

Specifieke API-oppervlakken opnemen

U kunt configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid, door de optie api_surface in te stellen. 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

Notitie

Vervang het XXXX deel van CAXXXX door de id van de toepasselijke regel.

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