//To create a listener that doesnt need data, and can return a value back to wherever the function was Raised public void AddEventListener <T>(string eventName, EventCallBackWithReturn <T> listener) { if (IsEventRegistered(eventName) == false) { this.RegisterEvent(eventName); } this._events[eventName] = (EventCallBackWithReturn <T>) this._events[eventName] + listener; }
//To remove an event listener that does not take in data, and returns a value public void RemoveEventListener <T>(string eventName, EventCallBackWithReturn <T> listener) { if (IsEventRegistered(eventName) == false) { this.RegisterEvent(eventName); } this._events[eventName] = (EventCallBackWithReturn <T>) this._events[eventName] - listener; if (this._events[eventName] == null) { this.RemoveEvent(eventName); } }
//To check if an event listener is already registered that does not take in data but does return a value public bool IsEventListenerRegistered <T>(string eventName, EventCallBackWithReturn <T> listener) { bool result = false; if (this.IsEventRegistered(eventName) == false) { return(result); } Delegate[] list = this._events[eventName].GetInvocationList(); foreach (Delegate d in list) { if ((EventCallBackWithReturn <T>)d == listener) { result = true; break; } } return(result); }