Pregunta

Estaba trabajando con la clase genérica en vb.net.
Y parece que el método de extensión no se puede aplicar a la clase genérica sin especificar el tipo.

Tengo esta clase genérica

Public Class MyGeneric(Of T)
    'Methods and properties go here 
    '
    '
End Class  

Esto está bien

<Extension()> _
Public Sub DoSomething(ByVal myGenericDoubleObj As MyGen(Of Double))

End Sub  

Esto NO está bien (IDE me da el error T como no definido)

<Extension()> _
Public Sub DoSomethingGeneric(ByVal myGenericObj As MyGen(Of T))

End Sub

¿Tiene esto algo que ver con la comprobación estática de .Net.
Decirme " Algo que puedes intentar hacer con el Tipo T puede no ser compatible y no te permitiré que lo hagas. & Quot;

P.S. Todo este dolor que he tomado como Clase Genérica proviene de otra biblioteca, y lo usé en muchos lugares diferentes. Soy un poco cuidadoso de heredar y agregar este método en mi clase genérica heredada.

¿Fue útil?

Solución

Si convierte su método de extensión en un método genérico, debería funcionar

es decir, DoSomething (Of T) () incrustado de solo DoSomething ()

<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top