다음을 통해 공유


CA2263: 형식이 알려진 경우 제네릭 오버로드를 선호합니다.

규칙 ID CA2263
타이틀 형식이 알려진 경우 제네릭 오버로드를 선호합니다.
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 9에서 기본적으로 사용 제안 사항

원인

인수를 System.Type 허용하는 메서드 오버로드는 형식이 컴파일 시간에 알려지고 적절한 제네릭 오버로드를 사용할 수 있을 때 호출됩니다.

규칙 설명

제네릭 오버로드는 형식이 컴파일 시간에 알려질 때 형식 System.Type 인수를 허용하는 오버로드보다 좋습니다(C#의 typeof 연산자 또는 Visual Basic의 GetType 연자 사용). 제네릭 오버로드는 향상된 컴파일 시간 검사 사용하여 클린 및 보다 형식이 안전한 코드를 승격합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 적절한 제네릭 오버로드를 사용합니다.

예시

다음 코드 조각은 CA2263 위반을 보여줍니다.

int size = Marshal.SizeOf(typeof(bool));
Dim size As Integer = Marshal.SizeOf(GetType(Boolean))

다음 코드 조각은 이 위반을 해결합니다.

int size = Marshal.SizeOf<bool>();
Dim size As Integer = Marshal.SizeOf(Of Boolean)()

경고를 표시하지 않는 경우

이 규칙에서 경고를 표시하지 않는 것이 안전합니다. 그러나 가능한 경우 제네릭 오버로드를 사용하는 것이 좋습니다.

경고 표시 안 함

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

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

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

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

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