Bagikan melalui


CA2260: Menerapkan antarmuka matematika generik dengan benar

Properti Nilai
ID Aturan CA2260
Judul Menerapkan antarmuka matematika generik dengan benar
Golongan Penggunaan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai peringatan

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, jenis turunan itu sendiri harus digunakan untuk parameter jenis berulang sendiri. 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 MyDate jenis sebagai parameter jenis untuk IParsable<TSelf> antarmuka.

using System;

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

Kapan harus menyembunyikan kesalahan

Jangan menyembunyikan peringatan dari aturan ini.

Baca juga