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