Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Property | Valor |
|---|---|
| ID da regra | CA2260 |
| Título | Implementar interfaces matemáticas genéricas corretamente |
| Categoria | Usage |
| Correção interruptiva ou sem interrupção | Sem interrupção |
| Habilitado por padrão no .NET 10 | Como aviso |
Causa
Essa regra é acionada quando você implementa uma interface matemática genérica que requer um parâmetro de tipo recorrente e não passa o tipo em si como o parâmetro de tipo.
Descrição da regra
Algumas interfaces matemáticas genéricas introduzem membros abstratos estáticos. A única maneira de acessar esses membros estáticos é por meio de uma restrição genérica que implementa o CRTP ("padrão de modelo curiosamente recorrente"). Portanto, o próprio tipo derivado deve ser usado como parâmetro de tipo recorrente. Se um tipo implementar essa interface sem passar o parâmetro de tipo necessário e a regra CA2260 for ignorada, o código será compilado com êxito, mas o resumo estático não ficará acessível. Portanto, o tipo não será utilizável. O compilador emite um aviso com a ID CS0315 nesse uso.
Como corrigir violações
Passe o parâmetro de tipo correto para o parâmetro de tipo 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 tipo MyDate como o parâmetro de tipo para a interface IParsable<TSelf>.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Quando suprimir erros
Não suprima um aviso nessa regra.