CA2260: 제네릭 수학 인터페이스를 올바르게 구현
속성 | 값 |
---|---|
규칙 ID | CA2260 |
제목 | 제네릭 수학 인터페이스를 올바르게 구현 |
범주 | 사용 현황 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 경고로 |
원인
이 규칙은 자체 되풀이 형식 매개 변수가 필요하고 형식 자체를 형식 매개 변수로 전달하지 않는 제네릭 수학 인터페이스를 구현할 때 발생합니다.
규칙 설명
일부 제네릭 수학 인터페이스에는 정적 추상 멤버가 도입됩니다. 이러한 정적 멤버에 액세스하는 유일한 방법은 ‘CRTP(호기심 많은 되풀이 템플릿 패턴)’를 구현하는 제네릭 제약 조건을 사용하는 것입니다. 따라서 파생 형식 그 자체는 자체 되풀이 형식 매개 변수에 사용해야 합니다. 하나의 형식이 필요한 형식 매개 변수를 전달하지 않고 이러한 인터페이스를 구현하며 CA2260이 무시되면 코드는 성공적으로 컴파일되지만 정적 추상에 액세스할 수 없습니다. 따라서 형식을 사용할 수 없습니다. 컴파일러는 이러한 사용에 대해 ID CS0315와 함께 경고를 내보냅니다.
위반 문제를 해결하는 방법
해당 인터페이스를 구현할 때 자체 되풀이 형식 매개 변수(TSelf)에 올바른 형식 매개 변수를 전달합니다.
예제
위반:
using System;
// Warns: The 'IParsable<TSelf>' requires the 'TSelf' type parameter to be filled with the derived type 'MyDate'
public readonly struct MyDate : IParsable<DateOnly>
{ ... }
Fix:
MyDate
형식을 IParsable<TSelf>
인터페이스의 형식 매개 변수로 전달합니다.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
오류를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
추가 정보
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET