다음을 통해 공유


CA1040: 빈 인터페이스를 사용하지 마십시오.

TypeName

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