Пример #1
0
        /// <summary>
        /// 通知所有观察者
        /// </summary>
        /// <param name="notify"></param>
        public void NotifyObservers <T>(INotification <T> noti)
        {
            IList <IObserverBase> observers = null;

            if (m_observerMap.ContainsKey(noti.ObserverName))
            {
                IList <IObserverBase> observers_ref = m_observerMap[noti.ObserverName];
                observers = new List <IObserverBase>(observers_ref);
            }

            if (observers != null)
            {
                for (int i = 0; i < observers.Count; i++)
                {
                    IObserverBase observer = observers[i];
                    if (observer is IObserver <T> )
                    {
                        (observer as IObserver <T>).NotifyObserver(noti);
                    }
                    else if (observer is IObserver <object> )
                    {
                        Notification <object> notify = Notification <object> .Allocate(noti.ObserverName, noti.Body, noti.Type);

                        (observer as IObserver <object>).NotifyObserver(notify);
                        notify.Release();
                    }
                    else if (observer is IObserver)
                    {
                        (observer as IObserver).NotifyObserver(noti);
                    }
                }
            }
        }
Пример #2
0
        public static SessionI ObtainSession(this IObserverBase observer, string key)
        {
            if (observer is null)
            {
                return(null);
            }
            sessionBinds.TryGetValue(key, out var session);

            return(session);
        }
Пример #3
0
 /// <summary>
 /// 注册成为观察者
 /// </summary>
 /// <param name="obName"></param>
 /// <param name="observer"></param>
 public void RegisterObserver(string eventName, IObserverBase observer)
 {
     if (m_observerMap.ContainsKey(eventName))
     {
         if (!m_observerMap[eventName].Contains(observer))
         {
             m_observerMap[eventName].Add(observer);
         }
     }
     else
     {
         m_observerMap.Add(eventName, new List <IObserverBase>()
         {
             observer
         });
     }
 }
Пример #4
0
        /// <summary>
        /// 通知所有观察者
        /// </summary>
        /// <param name="notify"></param>
        public void NotifyObservers(INotification noti)
        {
            IList <IObserverBase> observers = null;

            if (m_observerMap.ContainsKey(noti.ObserverName))
            {
                IList <IObserverBase> observers_ref = m_observerMap[noti.ObserverName];
                observers = new List <IObserverBase>(observers_ref);
            }

            if (observers != null)
            {
                for (int i = 0; i < observers.Count; i++)
                {
                    IObserverBase observer = observers[i];
                    if (observer is IObserver)
                    {
                        (observer as IObserver).NotifyObserver(noti);
                    }
                }
            }
        }
Пример #5
0
 /// <summary>
 /// 添加監控
 /// </summary>
 public static void AddListen <T>(IObserverBase observerBase) where T : IObserverBase
 {
     mvcDictionary.Add(observerBase.GetType(), observerBase);
 }
Пример #6
0
 /// <summary>
 /// 添加監控
 /// </summary>
 public static void AddListen <T>(string typeName, IObserverBase observerBase) where T : IObserverBase
 {
     mvcDictionary.Add(typeName, observerBase);
 }