Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
| Propiedad | Valor |
|---|---|
| Identificador de la regla | CA2260 |
| Título | Implementación correcta de interfaces matemáticas genéricas |
| Categoría | Uso |
| La corrección interrumpe o no interrumpe | Sin interrupción |
| Habilitado de forma predeterminada en .NET 10 | Como advertencia |
| Idiomas aplicables | C# |
Causa
Esta regla se activa cuando se implementa una interfaz matemática genérica que requiere un parámetro de tipo auto-recurrente y no se pasa el tipo en sí mismo como el parámetro de tipo.
Descripción de la regla
Algunas interfaces matemáticas genéricas presentan miembros abstractos estáticos. La única manera de acceder a esos miembros estáticos es mediante una restricción genérica que implemente el "patrón de plantilla curiosamente recurrente" (CRTP). Por lo tanto, debe usarse el propio tipo derivado para el parámetro de tipo autoperiódico. Si un tipo implementa dicha interfaz sin pasar el parámetro de tipo necesario y CA2260 se omite, el código se compila correctamente, pero no se podrá acceder al resumen estático. Por lo tanto, el tipo no se podrá usar. El compilador emite una advertencia con el identificador CS0315 con ese uso.
Cómo corregir infracciones
Proporcione el parámetro de tipo correcto para el parámetro de tipo auto-recurrente (TSelf) al implementar estas interfaces.
Ejemplo
Infracción:
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>
{ ... }
Corrección:
Pase el tipo MyDate como parámetro de tipo para la interfaz IParsable<TSelf>.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Cuándo suprimir los errores
No suprima las advertencias de esta regla.