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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top