2010-03-09 2 views
3

d'erreur:WithEvents génériques

'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints

Contexte:

Public Class Tadpole(Of T As IVisibleChanged, P As IVisibleChanged) 
    Private WithEvents _Tad As T ' ERROR ' 
    Private WithEvents _Pole As P ' ERROR ' 

    Public Property Tad() As T ... 

    Public Property Pole() As P ... 

End Class 

''' IVisibleChanged ''' 
Public Interface IVisibleChanged 
    Property Visible() As Boolean 
    Event VisibleChanged As EventHandler 
End Interface 

Solution:

a. Utilisez AddHandler pour gérer les événements définis dans une structure.

EDIT

b. utiliser Private WithEvents _Tad AsIVisibleChanged (M.A. Hanin)

c. ?

Répondre

3

Je suppose que c'est parce que WithEvents ne peut pas supporter les types de valeur. Lorsque vous ne faites que contraindre T à être IVisibleChanged, vous ne garantissez pas un type de référence, WithEvents ne peut donc pas être utilisé. Je ne sais pas la syntaxe de VB, mais si elle est quelque chose comme C# vous pourriez probablement faire:

' Not sure of the VB syntax. 
(Of T As {IVisibleChanged, Class}) 

Cela garantit que T non seulement par la mise en œuvre IVisibleChanged aussi que ce ne sera pas un struct.

+0

la syntaxe est OK, merci! – serhio

Questions connexes