Megosztás a következőn keresztül:


CA1040: Az üres felületek elkerülése

Tulajdonság Érték
Szabályazonosító CA1040
Cím Az üres felületek elkerülése
Kategória Design
A javítás kompatibilitástörő vagy nem törik Törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A felület nem deklarál tagokat, és nem implementál két vagy több más felületet.

Ez a szabály alapértelmezés szerint csak külsőleg látható felületeket tekint meg, de ez konfigurálható.

Szabály leírása

Az interfészek olyan tagokat határoznak meg, amelyek viselkedési vagy használati szerződést biztosítanak. Az interfész által leírt funkciók bármilyen típussal alkalmazhatók, függetlenül attól, hogy a típus hol jelenik meg az öröklési hierarchiában. Egy típus implementál egy interfészt úgy, hogy implementációkat biztosít a felület tagjai számára. Az üres felület nem definiál tagokat. Ezért nem határoz meg végrehajtható szerződést.

Ha a kialakítás olyan üres interfészeket tartalmaz, amelyeket a típusok várhatóan megvalósítanak, akkor valószínűleg egy illesztőt használ jelölőként, vagy egy típuscsoport azonosítására. Ha ez az azonosítás futásidőben történik, ennek a megfelelő módja egy egyéni attribútum használata. A céltípusok azonosításához használja az attribútum jelenlétét vagy hiányát, illetve az attribútum tulajdonságait. Ha az azonosításnak fordításkor kell történnie, akkor elfogadható üres felület használata.

Szabálysértések kijavítása

Távolítsa el a felületet, vagy adjon hozzá tagokat. Ha az üres felületet használja egy típuskészlet címkézéséhez, cserélje le a felületet egy egyéni attribútumra.

Mikor kell letiltani a figyelmeztetéseket?

Biztonságosan letiltható a szabály figyelmeztetése, ha a rendszer a felület használatával azonosítja a típusok egy készletét fordításkor.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak ehhez a szabályhoz, az összes szabályhoz, vagy az ebben a kategóriában (Tervezés) szereplő összes szabályhoz, amelyekre vonatkozik. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Példa

Az alábbi példa egy üres felületet mutat be.

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