다음을 통해 공유


CA1005: 제네릭 형식에 매개 변수를 너무 많이 사용하지 마십시오.

속성
규칙 ID CA1005
제목 제네릭 형식에 매개 변수를 너무 많이 사용하지 마세요.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경
.NET 9에서 기본적으로 사용 아니요

원인

외부에 표시되는 제네릭 형식에는 두 개 이상의 형식 매개 변수가 있습니다.

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

규칙 설명

제네릭 형식에 포함된 형식 매개 변수가 많을수록 각 형식 매개 변수가 무엇을 나타내는지를 파악하거나 기억하기가 더 어렵습니다. 보통은 List<T>와 같이 하나의 형식 매개 변수를 사용하지만, Dictionary<TKey, TValue>에서와 같이 두 개의 형식 매개 변수가 있는 경우에 특정 사례도 있습니다. 그러나 형식 매개 변수가 세 개 이상이면 대부분의 사용자가 사용하기에 너무 어렵습니다(예: C#에서의 TooManyTypeParameters<T, K, V> 또는 Visual Basic에서의 TooManyTypeParameters(Of T, K, V)).

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 두 개 이상의 형식 매개 변수를 사용하도록 디자인을 변경합니다.

경고를 표시하지 않는 경우

디자인에서 두 개를 초과하는 형식 매개 변수를 요구하지 않는 한 이 규칙의 경고를 표시해야 합니다. 쉽게 이해하고 사용할 수 있는 구문에서 제네릭을 제공하면 새 라이브러리 도입률을 배우고 늘리는 데 필요한 시간이 단축됩니다.

경고 표시 안 함

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

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

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

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

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

분석할 코드 구성

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

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

특정 API 화면 포함

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

CA1010: 컬렉션은 제네릭 인터페이스를 구현해야 합니다.

CA1000: 정적 멤버를 제네릭 형식으로 선언하지 마십시오.

CA1002: 제네릭 목록을 노출하지 마십시오.

CA1003: 제네릭 이벤트 처리기 인스턴스를 사용하십시오.

참고 항목