public override void Invoke(BaseDataHolder dataHolder) { var castedDataHolder = dataHolder as DataHolder <T>; if (castedDataHolder == null) { throw new InvalidCastException(); } m_invoking = true; foreach (var listener in m_listeners) { listener(castedDataHolder.Data); } m_invoking = false; if (m_listenersToRemove.Count > 0) { foreach (var listener in m_listenersToRemove) { m_listeners.Remove(listener); } m_listenersToRemove.Clear(); } if (m_listenersToAdd.Count > 0) { m_listeners.AddRange(m_listenersToAdd); m_listenersToAdd.Clear(); } }
private void DispatchEvent(BaseDataHolder dataHolder) { if (!m_eventMap.ContainsKey(dataHolder.PropertyName)) { return; } m_eventMap[dataHolder.PropertyName].Invoke(dataHolder); }
public abstract void Invoke(BaseDataHolder dataHolder);