CA1040:避免使用空接口

类型名

AvoidEmptyInterfaces

CheckId

CA1040

类别

Microsoft.Design

是否重大更改

原因

接口未声明任何成员或实现两个或更多其他接口。

规则说明

接口定义提供某个行为或使用协定的成员。 接口所描述的功能可以被任何类型采用,而不管该类型出现在继承层次结构中的哪个位置。 类型通过实现接口的成员来实现接口。 空的接口不定义任何成员。 因此,它不定义可以实现的协定。

如果您的设计中包含类型需要实现的空接口,可以将接口作为标记或者作为标识一组类型的手段使用。 如果此标识在运行时出现,则实现这种应用的正确方式是使用自定义特性。 通过是否使用特性,或使用特性的属性,可以标识目标类型。 如果该标识必须在编译时出现,则使用空接口是可以接受的。

如何解决冲突

移除该接口或为其添加成员。 如果使用空接口来标记一组类型,请使用自定义特性来替换该接口。

何时禁止显示警告

如果该接口用于在编译时标识一组类型,则可以安全地禁止显示此规则发出的警告。

示例

下面的示例演示一个空接口。

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