public void Subscribe <T>(EventsHandlers.EventHandler <T> eventHandler) where T : Event { var name = typeof(T).FullName; if (!connection.IsConnected) { connection.TryConnect(); } if (handlers.ContainsKey(name)) { handlers[name].Add(eventHandler); } else { policy.Execute(() => { using (var channel = connection.CreateModel()) { channel.QueueBind(queue: queue, exchange: "myExchange", routingKey: name); handlers.Add(name, new List <IEventsHandler>()); handlers[name].Add(eventHandler); eventTypes.Add(typeof(T)); } }); } }
public void Unsubscribe <T>(EventsHandlers.EventHandler <T> eventHandler) where T : Event { var name = typeof(T).FullName; if (!connection.IsConnected) { connection.TryConnect(); } if (handlers.ContainsKey(name) && handlers[name].Contains(eventHandler)) { handlers[name].Remove(eventHandler); } }