Qual é a maneira preferida de fazer bolhas de eventos?
Eu tenho três objetos ObjectA tem um ObjectB, ObjectB tem um ObjectC. Quando o ObjectC dispara um evento, eu preciso que o ObjectA saiba sobre isso, então foi isso que eu fiz ...
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();
}
}
}
Essa é a maneira correta de lidar com isso ou existe uma maneira melhor? Não quero que o ObjectA saiba nada sobre o ObjectC, apenas que ele gerou um evento.