CA2260: Általános matematikai felületek helyes implementálása

Tulajdonság Érték
Szabályazonosító CA2260
Cím Általános matematikai felületek helyes implementálása
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Figyelmeztetésként

Ok

Ez a szabály akkor aktiválódik, ha olyan általános matematikai felületet implementál, amely ön-ismétlődő típusparamétert igényel, és nem adja át magát a típust típusparaméterként.

Szabály leírása

Egyes általános matematikai felületek statikus absztrakt tagokat vezetnek be. A statikus tagok elérésének egyetlen módja egy általános kényszer, amely megvalósítja a "kíváncsian ismétlődő sablonmintát" (CRTP). Ezért magát a származtatott típust kell használni az ön-ismétlődő típusparaméterhez. Ha egy típus a szükséges típusparaméter átadása nélkül implementálja az ilyen felületet, és a CA2260 figyelmen kívül hagyja, a kód fordítása sikeres lesz, de a statikus absztrakt nem lesz elérhető. Így a típus nem lesz használható. A fordító cs0315 azonosítójú figyelmeztetést ad ki az ilyen használatról.

Szabálysértések kijavítása

Adja meg a megfelelő típusparamétert az ön-ismétlődő típusparaméterhez (TSelf) ezen interfészek megvalósításakor.

Példa

Szabálysértés:

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

Javítás:

Adja meg a MyDate típust a felület típusparamétereként IParsable<TSelf> .

using System;

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

Mikor kell letiltani a hibákat?

Ne tiltsa el a szabály figyelmeztetését.

Kapcsolódó információk