错误:
'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints
背景:
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
解决方法:
一个。使用 AddHandler
处理结构中定义的事件。
编辑
使用 Private WithEvents _Tad As
IVisibleChanged
(M.A. Hanin)
?
最佳答案
我怀疑这是因为 WithEvents 不支持值类型。当您仅将 T 约束为 IVisibleChanged 时,您不能保证引用类型,因此无法使用 WithEvents。我不知道 VB 语法,但如果它类似于 C#,你可能会这样做:
' Not sure of the VB syntax.
(Of T As {IVisibleChanged, Class})
这保证了 T 不仅会实现 IVisibleChanged,而且它不会是一个结构。
关于.net - 通用事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408675/