2008-12-08 11 views
10

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.Aplicando el método de extensión a la clase genérica con el tipo genérico

que tienen 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 es correcto (IDE me da error de T como no definido.)

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

End Sub 

¿Este algo que ver con la comprobación estática de .Net.
Diciéndome "Algo que puede intentar hacer con Type T puede no ser compatible y no le permitiré hacerlo".

P.S. Todo este dolor que he tomado como clase genérica proviene de otra biblioteca, y se utiliza en muchos lugares diferentes. Tengo poco cuidado de heredar y agregar este método en mi clase genérica heredada.

+1

(Of T) + 1 para exactamente lo que estaba buscando –

Respuesta

15

Si usted hace su método de extensión de un método genérico que debería funcionar

es decir HacerAlgo () instread de poco HacerAlgo()

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

espero que esto ayude

+0

Lo tengo para trabajar. Poca estupidez de mi parte. Gracias. – Biswanath

+2

C# versión: public static void DoSomething (este MyGeneric myGenericObj) –

Cuestiones relacionadas