Applicazione del metodo di estensione alla classe generica con tipo generico
-
20-08-2019 - |
Domanda
Stavo lavorando con la classe generica in vb.net.
E sembra che il metodo di estensione non possa essere applicato alla classe generica senza specificare il tipo.
Ho questa classe generica
Public Class MyGeneric(Of T)
'Methods and properties go here
'
'
End Class
Questo è OK
<Extension()> _
Public Sub DoSomething(ByVal myGenericDoubleObj As MyGen(Of Double))
End Sub
Questo NON è OK (IDE mi dà l'errore T come non definito.)
<Extension()> _
Public Sub DoSomethingGeneric(ByVal myGenericObj As MyGen(Of T))
End Sub
Ha a che fare con il controllo statico di .Net.
Dicendomi " Qualcosa che potresti provare a fare con il tipo T potrebbe non essere compatibile e non ti permetterò di farlo. & Quot;
P.S. Tutto questo dolore che ho preso come classe generica proviene da un'altra biblioteca e utilizzato in molti luoghi diversi. Sono un po 'diffidente di ereditare e aggiungere questo metodo nella mia classe generica ereditata.
Soluzione
Se rendi il tuo metodo di estensione un metodo generico dovrebbe funzionare
ovvero DoSomething (Of T) () indica solo DoSomething ()
<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub
Spero che questo aiuti