VB.NET: Lanzar eventos de la clase base desde una clase derivada

Supongamos que:

  1. Tenemos una clase que queremos desdoblar en subclases
  2. La futura clase base tiene eventos
  3. El refactoring nos lleva a la necesidad de que desde una clase derivada haya que hacer un RaiseEvent de un evento de la clase base.

Cuando intentemos hacer lo indicado en el punto 3, nos surgirá un error de compilación diciendo que una clase derivada no puede lanzar eventos de la clase base. Para resolver esto, agregamos un método protected en la clase base que encapsule el RaiseEvent de marras, y en la clase derivada lo invocamos usando MyBase. Así:

En la clase base (Los parámetros son a gusto nuestro):
Protected Overridable Sub OnMessageGenerated(ByVal NewSender As Object, ByVal NewMessage As String)
    RaiseEvent MessageGenerated(NewSender, New MessageEventArgs(NewMessage))
End Sub
Y en la clase derivada
'Hacer cosas...
'Quiero lanzar el evento de la clase base
MyBase.OnMessageGenerated( Me, "Message" )
'Hacer mas cosas...
Referencias: Post de Mark Gilbert

Comments

Popular posts from this blog

VB.NET: Raise base class events from a derived class

Apache Kafka - I - High level architecture and concepts

C++/CLI: Convert a String to BSTR or some other nasty stuff