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, para1
e 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 U
type , 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
- Altere a declaração de tipo para remover a interdependência entre os tipos.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: