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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top