Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA2260 |
| Tytuł | Poprawnie zaimplementuj ogólne interfejsy matematyczne |
| Kategoria | Użycie |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Jako ostrzeżenie |
| Zastosowane języki | C# |
Przyczyna
Ta reguła jest uruchamiana podczas implementowania ogólnego interfejsu matematycznego, który wymaga samoodnawialnego parametru typu, i kiedy nie przekazujesz samego typu jako tego parametru.
Opis reguły
Niektóre ogólne interfejsy matematyczne przedstawiają statyczne abstrakcyjne członkowie. Jedynym sposobem uzyskania dostępu do tych statycznych elementów członkowskich jest ograniczenie generyczne, które implementuje "osobliwie powtarzający się wzorzec szablonu" (CRTP). W związku z tym sam typ pochodny musi być używany dla parametru typu cyklicznego. Jeśli typ implementuje taki interfejs bez przekazywania wymaganego parametru typu i CA2260 jest ignorowany, kod zostanie skompilowany pomyślnie, ale statyczna abstrakcja nie będzie dostępna. W związku z tym tego typu nie można będzie używać. Kompilator emituje ostrzeżenie o identyfikatorze CS0315 o takim użyciu.
Jak naprawić naruszenia
Przekaż poprawny parametr typu dla parametru typu cyklicznego (TSelf) podczas implementowania tych interfejsów.
Przykład
Naruszenie:
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>
{ ... }
Poprawka:
Przekaż typ MyDate jako parametr typu dla interfejsu IParsable<TSelf>.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Kiedy tłumić błędy
Nie pomijaj ostrzeżeń dla tej reguły.