CA2260: 제네릭 수학 인터페이스를 올바르게 구현

속성 값
규칙 ID CA2260
제목 제네릭 수학 인터페이스를 올바르게 구현
범주 사용 현황
수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 주요 변경 아님
.NET 10에서 기본적으로 사용하도록 설정 경고로서
적용 가능한 언어 C#

원인

이 규칙은 자체 되풀이 형식 매개 변수가 필요하고 형식 자체를 형식 매개 변수로 전달하지 않는 제네릭 수학 인터페이스를 구현할 때 발생합니다.

규칙 설명

일부 제네릭 수학 인터페이스에는 정적 추상 멤버가 도입됩니다. 이러한 정적 멤버에 액세스하는 유일한 방법은 ‘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>
{ ... }

오류를 억제해야 하는 경우

이 규칙에서 경고를 무시하지 마십시오.

관련 항목 보기