title: What is the preferred way to bubble events?
body: <p>I have three objects ObjectA has an ObjectB, ObjectB has an ObjectC.  When ObjectC fires an event I need ObjectA to know about it, so this is what I've done...</p>
  
  <pre><code>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();
          }
      }
  }
  </code></pre>
  
  <p>Is this the proper way to handle this, or is there a better way?  I don't want ObjectA to know about ObjectC at all, only that it raised an event.</p>