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.

Weitere Informationen