title: C#, How to design multiple interfaces to have access to the same delegates?
body: <p>Grabbing my boss's code, which is a service orientated architecture, I have an interface like the one below:</p>
  
  <pre><code>namespace MyCompany.Namespace
  {
      delegate void DataEvent(string id, IDataFrame frame);
      delegate void LogMessage(MessageType type, string id, string message);
      delegate void ReadyStateChanged(string id, Device state);
  
      interface IDeviceService
      {
          void Trigger();
          void Start();
          void Stop();
  
          event DataEvent NewDataFrame;
          event LogMessage LogMessage;
          event ReadyStateChanged StateChanged;
  
          void ChangeState(Device newState);
  
          // other method stubs
      }
  }
  </code></pre>
  
  <p>This interface is used to build a Device Service, which uses delegates to pass events back and forth from a separate thread to a main object on another thread. I would like to build another service which uses a similar model. I believe the new service will need to be based on a different interface though, so I will have to create another interface. I'd like the new interface to use the same delegates as above, but since the delegates above are defined outside the interface, in the overall namespace, I can't redefine them (this makes sense).</p>
  
  <p>If I would like two (or more) interfaces in the same namespace to be able to use the same delegates, what should I do? Can I create a "super-interface" which stores the delegates? Or a superclass which has the delegates? Maybe a better design exists?</p>