Тестовый случай:
Public Class T
Public Event A()
Public Sub New()
RaiseEvent A()
End Sub
End Class
Module Module1
Sub Main()
Dim obj = New T()
AddHandler obj.A, AddressOf handleA
End Sub
Sub handleA()
Debug.WriteLine("!")
End Sub
End Module
Конечно, AddHandler
еще не запускался при срабатывании New
.
Итак, я попытался так:
Public Class T
Public Event A()
Public Sub New()
RaiseEvent A()
End Sub
End Class
Module Module1
Dim WithEvents obj As T
Sub Main()
obj = New T()
End Sub
Sub handleA() Handles obj.A
Debug.WriteLine("!")
End Sub
End Module
Но даже здесь кажется, что обработчик не регистрируется до тех пор, пока не завершится New
.
Однако в реальной жизни событие возникает в коде, который семантически является частью инициализации объекта, и я бына самом деле, скорее, не нужно создавать какую-то Initialize
функцию.
Есть ли у меня какая-либо другая опция?