CA1040: Evite interfaces vazios
TypeName |
AvoidEmptyInterfaces |
CheckId |
CA1040 |
<strong>Categoria</strong> |
Microsoft.design |
Alteração significativa |
Quebrando |
Causa
A interface não declarar quaisquer membros ou implementar duas 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 todos os membros. Portanto, ele não define um contrato que pode ser implementado.
Se o design incluir vazios são deverão implementar interfaces tipos, você provavelmente está usando uma interface como um marcador ou de uma maneira de identificar um grupo de tipos. Se essa identificação irá ocorrer em tempo de execução, a maneira correta de fazer isso é usar um atributo personalizado. Use a presença ou ausência do atributo ou as propriedades do atributo, identificar os tipos de destino. Se a identificação deve ocorrer em tempo de compilação, é aceitável o uso de uma interface vazia.
Como corrigir violações
Remover a interface ou adicionar membros a ela. 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 esta regra quando a interface é usada para identificar um conjunto de tipos em tempo de compilação.
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
{
};
}