Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Property | valor |
|---|---|
| ID da regra | CA2260 |
| Título | Implementar interfaces matemáticas genéricas corretamente |
| Categoria | Utilização |
| A correção está quebrando ou não quebrando | Sem quebra |
| Habilitado por padrão no .NET 10 | Como aviso |
Motivo
Esta regra é acionada quando você implementa uma interface matemática genérica que requer um parâmetro de tipo autorecorrente e não passa o próprio tipo como o parâmetro type.
Descrição da regra
Algumas interfaces matemáticas genéricas introduzem membros abstratos estáticos. A única maneira de acessar esses membros estáticos é através de uma restrição genérica que implementa o "padrão de modelo curiosamente recorrente" (CRTP). Portanto, o próprio tipo derivado deve ser usado para o parâmetro de tipo auto-recorrente. Se um tipo implementar tal interface sem passar o parâmetro de tipo necessário e CA2260 for ignorado, o código será compilado com êxito, mas o resumo estático não estará acessível. Assim, o tipo não será utilizável. O compilador emite um aviso com ID CS0315 sobre tal uso.
Como corrigir violações
Passe o parâmetro de tipo correto para o parâmetro de tipo auto-recorrente (TSelf) ao implementar essas interfaces.
Exemplo
Violação:
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>
{ ... }
Correção:
Passe o MyDate tipo como o parâmetro type para a IParsable<TSelf> interface.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Quando suprimir erros
Não suprima um aviso desta regra.