Question

Je travaillais avec la classe générique sur vb.net.
Et il semble que la méthode d'extension ne puisse pas être appliquée à une classe générique sans spécifier le type.

J'ai cette classe générique

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

C'est bon

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

End Sub  

Ceci n'est pas correct (l'IDE m'a donné l'erreur T non définie.)

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

End Sub

Est-ce que cela a quelque chose à voir avec la vérification statique du .Net.
Me dire "Il est possible que quelque chose que vous essayiez de faire avec Type T ne soit pas compatible et je ne vous permettrai pas de le faire."

P.S. Toute cette douleur que j'ai prise en tant que classe générique provient d'une autre bibliothèque et est utilisée à de nombreux endroits. Je me méfie un peu d’hériter et d’ajouter cette méthode à ma classe générique héritée.

Était-ce utile?

La solution

Si vous faites de votre méthode d'extension une méthode générique, elle devrait fonctionner

C'est-à-dire quelque chose (de T) () et non de quelque chose de (Do) quelque chose ()

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

J'espère que cela vous aidera

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top