/// <summary> /// Adds an event handler delegate. /// </summary> /// <param name="type"></param> /// <param name="handler"></param> public void AddEventDelegate(string type, EventHandlerDelegate handler) { Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(type)); Contract.Requires<ArgumentNullException>(handler != null); AddEventDelegate(type, handler, false); }
/// <summary> /// Register an event handler. /// </summary> /// <param name="eventType"> /// The <see cref="System.Object"/> type of event to register the listener for. /// This value may not be null. /// </param> /// <param name="eventHandler"> /// The <see cref="EventHandlerDelegate"/> delegate, to call, whenever the given event happens. /// This value may not be null. /// </param> public void RegisterListener(object eventType, EventHandlerDelegate eventHandler) { EventHandlerDelegate handler; if (this.handlers.TryGetValue(eventType, out handler)) { // Remove the handler first, before adding it again. This prevents the // handler from being registered twice in the multi-cast delegate. handler -= eventHandler; handler += eventHandler; // Don't forget to re-assign the handler to, as delegates have overloaded // + and - operators, making them essentially behave like immutable objects. // They may also change state from being a Delegate object to becoming a // MulticastDelegate thingy, which requires those overloads. this.handlers[eventType] = handler; } else { // The event type does not have a handler yet, add a new entry // to the dictionary for the given event type. handler = eventHandler; this.handlers.Add(eventType, handler); } }
/// <summary> /// Adds an event handler delegate. /// </summary> /// <param name="type"></param> /// <param name="handler"></param> /// <param name="capture"></param> public void AddEventDelegate(string type, EventHandlerDelegate handler, bool capture) { Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(type)); Contract.Requires<ArgumentNullException>(handler != null); Register(type, new ActionEventListener(_ => handler(_)), capture); }
/// <summary> /// Remove a previously registered event handler from handling the given type of event. /// Should the handler not be registered for the given event, the call is ignored. /// </summary> /// <param name="eventType"> /// The <see cref="System.Object"/> type of event to remove the listener for. /// This value may not be null. /// </param> /// <param name="eventHandler"> /// The <see cref="EventHandlerDelegate"/> delegate, to call, whenever the given event happens. /// This value may not be null. /// </param> public void RemoveListener(object eventType, EventHandlerDelegate eventHandler) { EventHandlerDelegate handler; if (this.handlers.TryGetValue(eventType, out handler)) { // Remove the specified handler from the multi-cast delegate. handler -= eventHandler; } }
public void AddListener <T>(EventHandlerDelegate <T> handler, EventDispatcher.Priority priority = EventDispatcher.Priority.DEFAULT) where T : struct { eventDispatcher.AddListener(handler, priority); }
public DebuggingEventHandler(Game1 game) { Pause += new EventHandlerDelegate(game.PauseGame); }