更新:2007 年 11 月
| TypeName | AvoidEmptyInterfaces | 
| CheckId | CA1040 | 
| 类别 | Microsoft.Design | 
| 是否重大更改 | 是 | 
原因
接口未声明任何成员或实现两个或更多其他接口。
规则说明
接口定义提供某个行为或使用协定的成员。接口所描述的功能可以被任何类型采用,无论该类型显示于继承层次结构中的哪一位置。类型通过实现接口的成员来实现接口。空的接口不定义任何成员。因此,它不定义可以实现的协定。
如果您的设计中包含类型需要实现的空接口,可以将接口作为标记或者作为标识一组类型的手段使用。如果此标识在运行时出现,则实现这种应用的正确方式是使用自定义属性。通过是否使用属性 (Attribute),或使用属性 (Attribute) 的属性 (Property),可以标识目标类型。如果该标识必须在编译时出现,则可以使用空接口。
如何修复冲突
移除该接口或为其添加成员。如果使用空接口来标记一组类型,请使用自定义属性来替换该接口。
何时禁止显示警告
如果该接口用于在编译时标识一组类型,则可以安全地禁止显示此规则发出的警告。
示例
下面的示例演示一个空接口。
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    
    {    
    };
}