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