다음을 통해 공유


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

속성
규칙 ID CA2260
타이틀 제네릭 수학 인터페이스를 올바르게 구현
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 경고로

원인

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

규칙 설명

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

오류를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

추가 정보