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