CA2260: Korrekte Implementierung generischer mathematischer Schnittstellen
Eigenschaft | Wert |
---|---|
Regel-ID | CA2260 |
Titel | Korrekte Implementierung generischer mathematischer Schnittstellen |
Kategorie | Verwendung |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 8 aktiviert | Als Warnung |
Ursache
Diese Regel wird wirksam, wenn Sie eine generische mathematische Schnittstelle implementieren, die einen sich wiederholenden Typparameter erfordert, und Sie den Typ selbst nicht als Typparameter übergeben.
Regelbeschreibung
Einige generische mathematische Schnittstellen führen statische abstrakte Member ein. Auf diese statischen Member kann nur über eine generische Einschränkung zugegriffen werden, die das "seltsam wiederkehrende Vorlagenmuster" (Curiously Recurring Template Pattern, CRTP) implementiert. Daher muss der abgeleitete Typ selbst für den sich wiederholenden Typparameter verwendet werden. Wenn ein Typ eine solche Schnittstelle implementiert, ohne den erforderlichen Typparameter zu übergeben, und CA2260 ignoriert wird, wird der Code erfolgreich kompiliert, aber auf die statische Zusammenfassung kann nicht zugegriffen werden. Daher ist der Typ nicht verwendbar. Der Compiler gibt bei dieser Verwendung eine Warnung mit der ID CS0315 aus.
Behandeln von Verstößen
Übergeben Sie den richtigen Typparameter für den sich wiederholenden Typparameter (TSelf), wenn Sie diese Schnittstellen implementieren.
Beispiel
Verstoß:
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>
{ ... }
Korrektur:
Übergeben Sie den MyDate
-Typ als Typparameter für die IParsable<TSelf>
-Schnittstelle.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Fälle für die Unterdrückung von Warnungen
Unterdrücken Sie keine Warnung dieser Regel.