CA2260: algemene wiskundige interfaces correct implementeren
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA2260 |
Titel | Algemene wiskundige interfaces correct implementeren |
Categorie | Gebruik |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als waarschuwing |
Oorzaak
Deze regel wordt geactiveerd wanneer u een algemene wiskundige interface implementeert waarvoor een zelf terugkerende typeparameter is vereist en u het type zelf niet doorgeeft als de typeparameter.
Beschrijving van regel
Sommige algemene wiskundige interfaces introduceren statische abstracte leden. De enige manier om toegang te krijgen tot deze statische leden is via een algemene beperking waarmee het 'nieuwsgierig terugkerende sjabloonpatroon' (CRTP) wordt geïmplementeerd. Daarom moet het afgeleide type zelf worden gebruikt voor de zelf terugkerende typeparameter. Als een type een dergelijke interface implementeert zonder de vereiste typeparameter door te geven en CA2260 wordt genegeerd, wordt de code gecompileerd, maar is de statische abstract niet toegankelijk. Het type is dus niet bruikbaar. De compiler verzendt een waarschuwing met id CS0315 voor dergelijk gebruik.
Schendingen oplossen
Geef de juiste typeparameter door voor de zelf terugkerende typeparameter (TSelf) bij het implementeren van deze interfaces.
Opmerking
Schending:
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>
{ ... }
Oplossing:
Geef het MyDate
type door als de typeparameter voor de IParsable<TSelf>
interface.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Wanneer fouten onderdrukken
Een waarschuwing van deze regel niet onderdrukken.