Parâmetro de tipo '<typeparametername1>' deve ter uma restrição 'New' ou uma restrição 'Structure' para satisfazer a restrição 'New' para parâmetro do tipo '< typeparametername2 >'
Uma instrução constrói um tipo genérico passando um parâmetro de tipo que não é restrito para satisfazer uma restrição New.
A restrição New significa que o argumento de tipo fornecido para que parâmetro do tipo deve expor um construtor sem parâmetros acessível para o código que cria objetos a partir dele.Todos os tipos de valor possuem construtores sem parâmetros, mas nem todos os tipos de referência fazem.Portanto, a Structure as restrições atendem a New restrição, mas o Class restrição ou um nome de classe ou interface, não.
A seguinte declaração pode gerar esse erro.
Public Class c1(Of t As New)
End Class
Public Class c2(Of u)
Public testObject As New c1(Of u)
End Class
Quando a classe c2 cria um objeto de c1, o parâmetro do tipo u não satisfaz a restrição New no parâmetro do tipo t.
ID de erro: BC32084
Para corrigir este erro
Se o parâmetro do tipo a ser passado para o tipo genérico pode satisfazer a restrição Structure ou New, então adicione a restrição apropriada a sua definição.
Public Class c2(Of u As Structure)
Se o parâmetro do tipo não puder atender a restrição Structure ou New, então, não o passe para o tipo genérico.Você deve passar algo como o argumento do tipo.
Consulte também
Conceitos
Tipos genéricos no Visual Basic
Tipos de valores e tipos de referências