Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA2260 |
| Заголовок | Правильно реализовать универсальные математические интерфейсы |
| Категория | Использование |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Как предупреждение |
| Применимые языки | C# |
Причина
Это правило запускается при реализации универсального математического интерфейса, требующего параметра само повторяющегося типа, и сам тип не передается в качестве параметра типа.
Описание правила
Некоторые универсальные математические интерфейсы вводят статические абстрактные элементы. Единственным способом доступа к этим статическим элементам является обобщённое ограничение, реализующее "любопытно повторяющийся шаблон" (CRTP). Таким образом, сам производный тип должен использоваться для параметра само повторяющегося типа. Если тип реализует такой интерфейс без передачи требуемого параметра типа и CA2260 игнорируется, код будет успешно компилироваться, но статический абстракт не будет доступен. Таким образом, тип будет непригоден для использования. Компилятор выдает предупреждение с идентификатором CS0315 для такого использования.
Устранение нарушений
Передайте правильный параметр типа для параметра само повторяющегося типа (TSelf) при реализации этих интерфейсов.
Пример
Нарушение:
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>
{ ... }
Исправление:
Передайте тип MyDate в качестве параметра типа для интерфейса IParsable<TSelf>.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Когда следует подавлять ошибки
Для этого правила отключать вывод предупреждений не следует.