Ler em inglês

Partilhar via


O método de extensão '<methodname>' tem restrições de tipo que nunca podem ser satisfeitas

Os parâmetros de tipo deste método interagem de uma forma que impede que eles sejam satisfeitos. O seguinte método de extensão é um exemplo.

'' Not valid.  
'<Extension()> _  
'Sub extensionExample(Of T As U, U)(ByVal para1 As T, ByVal para2 As U)  
'End Sub  

Como o método é um método de extensão, o compilador deve ser capaz de determinar o tipo ou tipos de dados que o método estende com base apenas no primeiro parâmetro na declaração do método, para1e o argumento enviado para esse parâmetro. Quando o primeiro parâmetro se refere a parâmetros de tipo genéricos, para1 as T, as restrições sobre os parâmetros genéricos restringem o conjunto de tipos aos quais o método se aplica.

A aplicabilidade de um método de extensão é determinada a partir do argumento fornecido para o primeiro parâmetro, que está arg1 no código a seguir.

'' Not valid.

'arg1.extensionExample(arg2)

Deve ser possível verificar as restrições em todos os parâmetros de tipo genéricos referidos pelo primeiro parâmetro, para1, olhando apenas para o primeiro argumento, arg1. No extensionExample, o conjunto de tipos que está sendo estendido não pode ser determinado apenas a partir do primeiro parâmetro. O parâmetro T type é restringido pelo parâmetro Utype , que não é referenciado por e não pode ser inferido a para1 partir de arg1. Portanto, a aplicabilidade do método a qualquer tipo possível não pode ser verificada, e o método nunca pode ser chamado.

ID de erro: BC36561

Para corrigir este erro

  • Altere a declaração de tipo para remover a interdependência entre os tipos.

Consulte também