Compartilhar via


Evite interfaces vazios

TypeName

AvoidEmptyInterfaces

CheckId

CA1040

Category (Categoria)

Microsoft.Design

Quebrando alterar

Quebrando

Causa

A interface não declarar quaisquer membros ou implementar dois ou mais interfaces.

Descrição da regra

Interfaces definir membros que fornecem um contrato de uso ou comportamento.A funcionalidade descrita pela interface pode ser adotada por qualquer tipo, independentemente de onde o tipo aparece na hierarquia de herança.Um tipo implementa uma interface, fornecendo implementações de membros da interface.Uma interface vazia não define nenhum membro.Portanto, não define um contrato que pode ser implementado.

Se o design incluir vazio interfaces tipos devem implementar, provavelmente você está usando uma interface sistema autônomo um marcador ou uma maneira de identificar um agrupar de tipos.Se essa identificação irá ocorrer no tempo de execução, a maneira correta de fazer isso é usar um atributo personalizado.Use a presença ou ausência do atributo, ou propriedades do atributo, para identificar os tipos de destino.Se a identificação deve ocorrer em time de compilar, em seguida, usando uma interface vazia é aceitável.

Como corrigir violações

Remover a interface ou adicionar membros a ele.Se a interface vazia está sendo usada para rotular um conjunto de tipos, substitua a interface com um atributo personalizado.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se a interface é usada para identificar um conjunto de tipos em time de compilar.

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