CA1040: Unikaj pustych interfejsów
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1040 |
Tytuł | Unikaj pustych interfejsów |
Kategoria | Projekt |
Poprawka powodująca niezgodność lub niezgodność | Kluczowa |
Domyślnie włączone na platformie .NET 9 | 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