Вызовите событие для объекта, который возник в интерфейсе из другого места - PullRequest
0 голосов
/ 23 мая 2011

Как я могу вызвать событие из другого класса, который реализует интерфейс, который содержит событие?

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 Ответ

1 голос
/ 23 мая 2011

Во-первых, причина, по которой вы не можете этого сделать, заключается в том, что event s можно вызывать только для класса, в котором они объявлены.

Обычный способ обойти это - предоставить метод protected OnEventName(), который вызывает событие. Затем вы можете наследовать от класса и либо вызвать, либо переопределить метод OnEventName(), чтобы вызвать событие. Если вы действительно хотите сделать это из класса, не связанного с иерархией, вы можете добавить метод OnEventName() к интерфейсу, который вы объявили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...