다음을 통해 공유


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