CA2260: Menerapkan antarmuka matematika generik dengan benar

Properti Nilai
ID Aturan CA2260
Judul Menerapkan antarmuka matematika generik dengan benar
Kategori Penggunaan
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Sebagai peringatan
Bahasa yang berlaku C#

Penyebab

Aturan ini diaktifkan saat Anda menerapkan antarmuka matematika generik yang memerlukan parameter jenis berulang sendiri dan Anda tidak meneruskan jenis itu sendiri sebagai parameter jenis.

Deskripsi aturan

Beberapa antarmuka matematika generik memperkenalkan anggota abstrak statis. Satu-satunya cara untuk mengakses anggota statis tersebut adalah melalui batasan generik yang mengimplementasikan "pola templat berulang yang aneh" (CRTP). Oleh karena itu, tipe turunan itu sendiri harus digunakan untuk parameter tipe rekursif. Jika jenis mengimplementasikan antarmuka seperti itu tanpa melewati parameter jenis yang diperlukan dan CA2260 diabaikan, kode akan berhasil dikompilasi tetapi abstrak statis tidak akan dapat diakses. Dengan demikian, jenisnya tidak akan dapat digunakan. Pengkompilasi memancarkan peringatan dengan ID CS0315 pada penggunaan tersebut.

Cara memperbaiki pelanggaran

Berikan parameter jenis yang benar untuk parameter jenis berulang mandiri (TSelf) saat mengimplementasikan antarmuka tersebut.

Contoh

Pelanggaran:

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>
{ ... }

Perbaikan:

Teruskan jenis MyDate sebagai parameter tipe untuk antarmuka IParsable<TSelf>.

using System;

// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }

Kapan harus menyembunyikan kesalahan

Jangan menyembunyikan peringatan dari aturan ini.

Lihat juga