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.