Sdílet prostřednictvím


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    
    {    
    };
}