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.