Delen via


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.

Zie ook