예제 #1
0
            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();
                }
            }
예제 #2
0
        private void DispatchEvent(BaseDataHolder dataHolder)
        {
            if (!m_eventMap.ContainsKey(dataHolder.PropertyName))
            {
                return;
            }

            m_eventMap[dataHolder.PropertyName].Invoke(dataHolder);
        }
예제 #3
0
 public abstract void Invoke(BaseDataHolder dataHolder);