从另一个位置调用源自Interface的对象上的事件

时间:2011-05-23 17:09:54

标签: vb.net oop events interface

如何从另一个实现包含事件的接口的类中引发事件?

Public Interface IMyEvent
    Event MyEvent()
End Interface

Public Class ClassA
    Implements IMyEvent

    Public Event MyEvent() Implements IMyEvent.MyEvent

End Class

Public Class ClassB
    Public myClassA As New ClassA

    Public Sub New()
        Dim myIEvent As IMyEvent = CType(myClassA, IMyEvent)
        RaiseEvent myIEvent.MyEvent ' Doesn't work.
    End Sub
End Class

注意评论 - 该代码不起作用。如果它通过接口包含在另一个类中,我怎样才能引发这样的事件?

1 个答案:

答案 0 :(得分:1)

首先,你不能这样做的原因是因为event只能在声明它们的类上调用。

通常的方法是提供调用事件的protected OnEventName()方法。然后,您可以从类继承并调用或覆盖OnEventName()方法以调用该事件。如果您真的希望能够从层次结构中不相关的类中执行此操作,则可以将OnEventName()方法添加到您声明的接口。