public static void Subscribe <T>(IMyMessageReceiver <T> receiver) where T : IMyMessage { IList <IMyMessageReceiver <T> > listeners = Subscribers.Find <IList <IMyMessageReceiver <T> > >(); if (listeners == null) { listeners = new List <IMyMessageReceiver <T> >(); Subscribers.Add(listeners); } // Now you can use currentList listeners.Add(receiver); }
public static void Subscribe <T>(IMyMessageReceiver <T> receiver) where T : IMyMessage { Type messageType = typeof(T); IMyMessageListeners listeners; if (!_subscribers.TryGetValue(messageType, out listeners)) { // no list found, so create it listeners = new MyMessageListeners(); _subscribers.Add(messageType, listeners); } listeners.Add(receiver); }
public static void Subscribe <T>(IMyMessageReceiver <T> receiver) where T : IMyMessage { Type messageType = typeof(T); IMyMessageListeners <IMyMessage> listeners; if (!_subscribers.TryGetValue(messageType, out listeners)) { // no list found, so create it listeners = new MyMessageListeners <IMyMessage>(); // This works now because IMessageListeners is covariant _subscribers.Add(messageType, newListeners); } // I would then find the right list and add the receiver it to it but haven't got this far listeners.Add(receiver); // most likely, not sure what you're doing at this point }
public void Add(IMyMessageReceiver receiver) { _list.Add(receiver); }
public void Add(IMyMessageReceiver <T> receiver) { // add it to an internal list }