Udostępnij za pośrednictwem


CA1040: Unikaj pustych interfejsów

Właściwości Wartość
Identyfikator reguły CA1040
Stanowisko Unikaj pustych interfejsów
Kategoria Projekt
Poprawka powodująca niezgodność lub niezgodność Kluczowa
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Interfejs nie deklaruje żadnych elementów członkowskich ani implementuje co najmniej dwóch innych interfejsów.

Domyślnie ta reguła sprawdza tylko interfejsy widoczne zewnętrznie, ale można to skonfigurować.

Opis reguły

Interfejsy definiują elementy członkowskie, które zapewniają zachowanie lub użycie kontraktu. Funkcjonalność opisana przez interfejs może zostać przyjęta przez dowolny typ, niezależnie od tego, gdzie ten typ się pojawia w hierarchii dziedziczenia. Typ implementuje interfejs, dostarczając implementacje dla jego elementów członkowskich. Pusty interfejs nie definiuje żadnych elementów członkowskich. W związku z tym nie definiuje kontraktu, który można zaimplementować.

Jeśli projekt zawiera puste interfejsy, które mają zostać zaimplementowane, prawdopodobnie używasz interfejsu jako znacznika lub sposobu identyfikowania grupy typów. Jeśli ta identyfikacja wystąpi w czasie wykonywania, prawidłowym sposobem wykonania tego celu jest użycie atrybutu niestandardowego. Użyj obecności lub braku atrybutu lub właściwości atrybutu, aby zidentyfikować typy docelowe. Jeśli identyfikacja musi wystąpić w czasie kompilacji, dopuszczalne jest użycie pustego interfejsu.

Jak naprawić naruszenia

Usuń interfejs lub dodaj do niego elementy członkowskie. Jeśli pusty interfejs jest używany do etykietowania zestawu typów, zastąp interfejs atrybutem niestandardowym.

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły, gdy interfejs jest używany do identyfikowania zestawu typów w czasie kompilacji.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA1040
// The code that's violating the rule is on this line.
#pragma warning restore CA1040

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA1040.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Tę opcję można skonfigurować tylko dla tej reguły, dla wszystkich reguł, do których ma ona zastosowanie, lub dla wszystkich reguł w tej kategorii (Projekt), których dotyczy. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Uwzględnij określone powierzchnie interfejsu API

Możesz skonfigurować, na których częściach bazy kodu ma być uruchamiana ta reguła, na podstawie ich ułatwień dostępu. Aby na przykład określić, że reguła powinna być uruchamiana tylko na powierzchni niepublicznego interfejsu API, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Przykład

W poniższym przykładzie pokazano pusty interfejs.

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