Partilhar via


CA1040: evitar interfaces vazias

TypeName

AvoidEmptyInterfaces

CheckId

CA1040

Categoria

Microsoft.Design

Alteração Significativa

Quebra

Causa

A interface não declara nenhum membro ou a ferramenta dois ou mais outras interfaces.

Descrição da Regra

As interfaces definem os membros que fornecem um contrato do comportamento ou de uso.A funcionalidade descrita pela interface pode ser adotada por qualquer tipo, independentemente de onde o tipo é exibido na hierarquia de herança.Um tipo implementa uma interface para fornecer implementações dos membros da interface.Uma interface vazio não define nenhum membro.Consequentemente, não define um contrato que pode ser implementado.

Se seu design inclui as interfaces vazios que os tipos são esperados implementar, você estiver usando provavelmente uma interface como um marcador ou uma maneira identificar um grupo de tipos.Se essa ID ocorrerá em tempo de execução, a forma correta de fazer isso é usar um atributo personalizado.Use a presença ou a ausência de atributo, as propriedades de atributo, para identificar os tipos de destino.Se a ID deve ocorrer em tempo de compilação, então é aceitável usar uma interface vazia.

Como Corrigir Violações

A interface adicionar ou remover membros.Se a interface vazia está sendo usada para identificar um conjunto de tipos, substitua a interface com um atributo personalizado.

Quando Suprimir Alertas

É seguro suprimir um aviso desta regra quando a interface é usada para identificar em tempo de compilação um conjunto de tipos.

Exemplo

O exemplo a seguir mostra uma interface vazia.

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