CA2260: Správně implementujte obecná matematická rozhraní

Vlastnost Hodnota
ID pravidla CA2260
Název Správná implementace obecných matematických rozhraní
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 Jako upozornění

Příčina

Toto pravidlo se aktivuje při implementaci obecného matematického rozhraní, které vyžaduje parametr typu sebeopakující se, a nepředáváte samotný typ jako parametr typu.

Popis pravidla

Některá obecná matematická rozhraní představují statické abstraktní členy. Jediný způsob, jak získat přístup k těmto statickým členům, je prostřednictvím obecného omezení, které implementuje "podivně opakující se vzor šablony" (CRTP). Odvozený typ musí být proto použit pro parametr typu sebeopakující se sám. Pokud typ implementuje takové rozhraní bez předání požadovaného parametru typu a CA2260 se ignoruje, kód se úspěšně zkompiluje, ale statický abstrakt nebude přístupný. Typ proto nebude použitelný. Kompilátor vygeneruje upozornění s ID CS0315 o tomto použití.

Jak opravit porušení

Při implementaci těchto rozhraní předejte správný parametr typu pro parametr samoopakujícího typu (TSelf).

Příklad

Porušení:

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

Oprava:

MyDate Předejte typ jako parametr typu pro IParsable<TSelf> rozhraní.

using System;

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

Kdy potlačit chyby

Nepotlačujte upozornění na toto pravidlo.

Viz také