CA1040: Vyhněte se prázdným rozhraním
TypeName |
AvoidEmptyInterfaces |
CheckId |
CA1040 |
Kategorie |
Microsoft.Design |
Narušující změna |
Narušující |
Příčina
Rozhraní nedeklaruje žádné členy nebo neimplementuje dva nebo více ostatních rozhraní.
Popis pravidla
Rozhraní definují členy ujednávající jejich chování nebo užití.Funkčnost popsaná rozhraním může být osvojena libovolným typem bez ohledu na to, kde se typ vyskytuje v hierarchii dědičnosti.Typ implementuje rozhraní tím, že poskytuje implementace jeho členů.Prázdné rozhraní nedefinuje žádné členy.A proto nedefinuje kontrakt, který by mohl být implementován.
Pokud návrh obsahuje prázdná rozhraní, u nichž je očekávána implementace typů, jsou rozhraní pravděpodobně použita jako značka nebo jako způsob k identifikaci skupiny typů.Pokud dojde k této identifikace za běhu aplikace, správný způsob, jak tohoto dosáhnout je použití vlastního atributu.Pro identifikaci typů cíle je zapotřebí použít přítomnost nebo nepřítomnost atributu nebo vlastností atributu.Pokud musí dojít k identifikaci v době kompilování aplikace, je možné použít prázdné rozhraní.
Jak vyřešit porušení
Odeberte rozhraní nebo k němu přidejte členy.Pokud je používáno prázdné rozhraní pro popisování sady typů, je zapotřebí jej nahradit rozhraním s vlastním atributem.
Kdy potlačit upozornění
Je bezpečné potlačit upozornění tohoto varování, pokud je rozhraní použito k identifikaci sady typů během kompilace aplikace.
Příklad
Následující příklad zobrazuje prázdné rozhraní.
Imports System
Namespace Samples
Public Interface IBadInterface ' Violates rule
End Interface
End Namespace
using System;
namespace DesignLibrary
{
public interface IBadInterface // Violates rule
{
}
}
#include "stdafx.h"
using namespace System;
namespace Samples
{
// Violates this rule
public interface class IEmptyInterface
{
};
}