다음을 통해 공유


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

가치
규칙 아이디 CA2263
Title 형식이 알려진 경우 제네릭 오버로드를 선호합니다.
범주 사용법
수정 사항이 문제를 해결하고 있는지 혹은 새로운 문제를 일으키지 않는지 여부 Non-breaking
.NET 10에서 기본적으로 사용하도록 설정 제안 사항

원인

인수를 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

자세한 내용은 코드 분석 경고를 표시하지 않는 방법을 참조하세요.