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

속성
규칙 ID CA1002
타이틀 제네릭 목록을 노출하지 마세요.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

형식에는 외부에 표시되는 멤버인 System.Collections.Generic.List<T>가 포함되어 있으며 List<T> 형식을 반환하거나, 해당 시그니처에 List<T> 매개 변수가 포함되어 있습니다.

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

규칙 설명

System.Collections.Generic.List<T>는 성능을 위해 설계되고 상속되지 않는 제네릭 컬렉션입니다. List<T>에는 상속된 클래스의 동작을 더 쉽게 변경할 수 있게 하는 가상 멤버가 포함되어 있지 않습니다. 다음 제네릭 컬렉션은 상속을 위해 디자인되었으며 List<T> 대신 노출되어야 합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 System.Collections.Generic.List<T> 형식을 상속을 위해 디자인된 제네릭 컬렉션 중 하나로 변경합니다.

경고를 표시하지 않는 경우

이 경고를 발생시키는 어셈블리가 재사용 가능한 라이브러리가 아닌 경우에만 이 규칙의 경고를 표시해야 합니다. 예를 들어 제네릭 목록을 사용하여 성능을 개선할 수 있는 성능 조정 애플리케이션에서는 이 경고를 표시하지 않아도 됩니다.

경고 표시 안 함

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

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

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

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

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

분석할 코드 구성

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

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

특정 API 화면 포함

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

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

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

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

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

참고 항목

제네릭