private static void DispatchEventToHandlerByPriority(Event @event, EventHandlerPriority priority) { if (eventHandlers[(int)priority].ContainsKey(@event.GetType())) { eventHandlers[(int)priority][@event.GetType()]?.Invoke(@event); } }
public static void AddEventHandler(Type eventType, EventDelegate handler, EventHandlerPriority priority = EventHandlerPriority.Default) { if (!eventType.IsSubclassOf(typeof(Event))) { throw new InvalidEventTypeException(eventType); } if (priority == EventHandlerPriority.Count) { throw new InvalidPriorityExeption(priority); } eventHandlersToAdd[(int)priority].Add(new KeyValuePair <Type, EventDelegate>(eventType, handler)); }
public InvalidPriorityExeption(EventHandlerPriority priority) { this.priority = priority; }