Share via


CA1040: Lege interfaces vermijden

Eigenschappen Weergegeven als
Regel-id CA1040
Titel Lege interfaces vermijden
Categorie Ontwerpen
Oplossing is brekend of niet-brekend Breken
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

De interface declareert geen leden of implementeert twee of meer andere interfaces.

Deze regel kijkt standaard alleen naar extern zichtbare interfaces, maar dit is configureerbaar.

Beschrijving van regel

Interfaces definiëren leden die een gedrag of gebruikscontract bieden. De functionaliteit die door de interface wordt beschreven, kan worden gebruikt door elk type, ongeacht waar het type wordt weergegeven in de overnamehiërarchie. Een type implementeert een interface door implementaties te bieden voor de leden van de interface. Een lege interface definieert geen leden. Daarom definieert het geen contract dat kan worden geïmplementeerd.

Als uw ontwerp lege interfaces bevat die naar verwachting worden geïmplementeerd, gebruikt u waarschijnlijk een interface als markering of een manier om een groep typen te identificeren. Als deze identificatie tijdens de uitvoering plaatsvindt, is het gebruik van een aangepast kenmerk de juiste manier om dit te bereiken. Gebruik de aanwezigheid of afwezigheid van het kenmerk of de eigenschappen van het kenmerk om de doeltypen te identificeren. Als de identificatie op het moment van compileren moet plaatsvinden, is het acceptabel om een lege interface te gebruiken.

Schendingen oplossen

Verwijder de interface of voeg er leden aan toe. Als de lege interface wordt gebruikt om een set typen te labelen, vervangt u de interface door een aangepast kenmerk.

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken wanneer de interface wordt gebruikt om een set typen tijdens het compileren te identificeren.

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

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

Opmerking

In het volgende voorbeeld ziet u een lege interface.

// Violates rule
public interface IBadInterface
{
}
' Violates rule
Public Interface IBadInterface
End Interface