Tengo tres objetos ObjectA tiene un ObjectB, ObjectB tiene un ObjectC. Cuando ObjectC dispara un evento que necesito Objecta a saber sobre él, así que esto es lo que he hecho ...¿Cuál es la forma preferida de eventos de burbujas?
public delegate void EventFiredEventHandler();
public class ObjectA
{
ObjectB objB;
public ObjectA()
{
objB = new ObjectB();
objB.EventFired += new EventFiredEventHandler(objB_EventFired);
}
private void objB_EventFired()
{
//Handle the event.
}
}
public class ObjectB
{
ObjectC objC;
public ObjectB()
{
objC = new ObjectC();
objC.EventFired += new EventFiredEventHandler(objC_EventFired);
objC.FireEvent();
}
public event EventFiredEventHandler EventFired;
protected void OnEventFired()
{
if(EventFired != null)
{
EventFired();
}
}
private void objC_EventFired()
{
//objC fired an event, bubble it up.
OnEventFired();
}
}
public class ObjectC
{
public ObjectC(){}
public void FireEvent()
{
OnEventFired();
}
public event EventFiredEventHandler EventFired;
protected void OnEventFired()
{
if(EventFired != null)
{
EventFired();
}
}
}
Es esta la forma correcta de manejar esto, o hay una mejor manera? No quiero que ObjectA sepa nada sobre ObjectC, solo que generó un evento.
Esta es una manera efectiva de hacerlo. – jvanrhyn