다음을 통해 공유


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

속성
규칙 ID CA1040
타이틀 빈 인터페이스를 사용하지 마세요.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

인터페이스는 멤버를 선언하거나 둘 이상의 다른 인터페이스를 구현하지 않습니다.

기본적으로 이 규칙은 외부에 표시되는 인터페이스만 확인하지만 이는 구성 가능합니다.

규칙 설명

인터페이스에서는 동작이나 사용 계약을 제공하는 멤버를 정의합니다. 인터페이스에 의해 설명되는 기능은 상속 계층 구조에서 형식이 나타나는 위치에 관계없이 모든 형식에서 사용할 수 있습니다. 형식에서는 인터페이스의 멤버에 대한 구현을 제공하여 인터페이스를 구현합니다. 빈 인터페이스는 어떤 멤버도 정의하지 않습니다. 따라서 구현될 수 있는 계약을 정의하지 않습니다.

디자인에 형식이 구현될 것으로 예상되는 빈 인터페이스가 포함된 경우에는 인터페이스를 마커로 사용하거나 형식 그룹을 식별하는 방법으로 사용할 수 있습니다. 이 ID가 런타임에 발생하는 경우에는 사용자 지정 특성을 사용하는 것이 올바른 방법입니다. 특성의 존재 여부 또는 특성의 속성을 사용하여 대상 유형을 식별할 수 있습니다. ID가 컴파일 시간에 발생해야 하는 경우에는 빈 인터페이스를 사용할 수 있습니다.

위반 문제를 해결하는 방법

인터페이스를 제거하거나 멤버를 추가합니다. 빈 인터페이스를 사용하여 형식 세트의 레이블을 지정하는 경우에는 인터페이스를 사용자 지정 특성으로 바꿉니다.

경고를 표시하지 않는 경우

컴파일 시간에 인터페이스를 형식 세트를 식별하는 데 사용하는 경우에는 이 규칙에서 경고를 표시하지 않아도 됩니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA1040
// The code that's violating the rule is on this line.
#pragma warning restore CA1040

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1040.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

분석할 코드 구성

다음 옵션을 사용하여 이 규칙이 실행될 코드베이스 부분을 구성합니다.

이 규칙, 적용되는 모든 규칙 또는 적용되는 이 범주(디자인)의 모든 규칙에 대해 이 옵션을 구성할 수 있습니다. 자세한 내용은 코드 품질 규칙 구성 옵션을 참조하세요.

특정 API 화면 포함

접근성을 기반으로 이 규칙을 실행할 코드베이스의 파트를 구성할 수 있습니다. 예를 들어 규칙이 퍼블릭이 아닌 API 표면에서만 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.

dotnet_code_quality.CAXXXX.api_surface = private, internal

예시

다음 예제는 빈 인터페이스를 보여 줍니다.

// Violates rule
public interface IBadInterface
{
}
' Violates rule
Public Interface IBadInterface
End Interface