Partilhar via


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

Tipos dos parâmetros desse método interagem de forma que impede que eles nunca sejam atendidas.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 de dados ou tipos que estende o método com base apenas no primeiro parâmetro na declaração de método, para1e o argumento enviado em para esse parâmetro. Quando o primeiro parâmetro refere-se a parâmetros de tipo genérico, para1 as T, as restrições sobre parâmetros genéricos restringem o conjunto de tipos para o qual o método se aplica.

Aplicabilidade de um método de extensão é determinada do argumento fornecido para o primeiro parâmetro, que é arg1 o 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érico referenciadas pelo primeiro parâmetro, para1, examinando somente o primeiro argumento arg1. In extensionExample, o conjunto de tipos que está sendo estendido não pode ser determinado do primeiro parâmetro sozinho. Tipo de parâmetro T é restringido por tipo de parâmetro U, que não forem citado por para1 e não pode ser deduzido a partir de arg1. Portanto, a aplicabilidade do método para 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

Conceitos

Métodos de extensão (Visual Basic)

Tipos genéricos no Visual Basic