public void Dispatch(int eventType) { if (_listeners == null) { return; //we have no listeners so don't dispatch anything! } for (int n = 0; n < _listeners.Count; n++) { RXSignalListener listener = _listeners[n]; if (listener.eventType == eventType) { if (_listeners[n].isWeak) { object target = _listeners[n].weakRef.Target; if (target != null) { (target as NoArgumentDelegate).Invoke(); } else //remove because it's null { _listeners.RemoveAt(n); n--; } } else { _listeners[n].strongDele.Invoke(); } } } }
public void AddListener(int eventType, NoArgumentDelegate dele, bool isWeak) { if(_listeners == null) _listeners = new List<RXSignalListener>(); RXSignalListener listener = new RXSignalListener(); listener.eventType = eventType; if(isWeak) { listener.isWeak = true; listener.weakRef = new WeakReference(dele); } else { listener.isWeak = false; listener.strongDele = dele; } _listeners.Add(listener); }
public void AddListener(int eventType, NoArgumentDelegate dele, bool isWeak) { if (_listeners == null) { _listeners = new List <RXSignalListener>(); } RXSignalListener listener = new RXSignalListener(); listener.eventType = eventType; if (isWeak) { listener.isWeak = true; listener.weakRef = new WeakReference(dele); } else { listener.isWeak = false; listener.strongDele = dele; } _listeners.Add(listener); }