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