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