Método de extensão aplicar a classe genérica com tipo genérico
-
20-08-2019 - |
Pergunta
Eu estava trabalhando com a classe genérica em vb.net.
E parece método de extensão não pode ser aplicado a classe genérica sem especificar o tipo.
Eu tenho essa classe genérica
Public Class MyGeneric(Of T)
'Methods and properties go here
'
'
End Class
Esta é Ok
<Extension()> _
Public Sub DoSomething(ByVal myGenericDoubleObj As MyGen(Of Double))
End Sub
Este não é Ok (IDE dá-me erro T como não definido.)
<Extension()> _
Public Sub DoSomethingGeneric(ByVal myGenericObj As MyGen(Of T))
End Sub
Isto é algo a ver com a verificação estática do .NET.
me dizendo "Algo que você pode tentar com fazer com tipo T não é compatível pode e não vou permitir que você faça isso."
P.S. Toda a esta dor que tomei como classe genérica vem de outra biblioteca, e usado em muitos lugares diferentes. Estou pouco cuidadoso de herdar e adicionando este método na minha classe genérica herdada.
Solução
Se você fazer o seu método de extensão um método genérico que deve funcionar
ou seja DoSomething (Of T) () instread de apenas DoSomething ()
<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub
Espero que isso ajude