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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: