/// <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); } } } }
public static SessionI ObtainSession(this IObserverBase observer, string key) { if (observer is null) { return(null); } sessionBinds.TryGetValue(key, out var session); return(session); }
/// <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 }); } }
/// <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); } } } }
/// <summary> /// 添加監控 /// </summary> public static void AddListen <T>(IObserverBase observerBase) where T : IObserverBase { mvcDictionary.Add(observerBase.GetType(), observerBase); }
/// <summary> /// 添加監控 /// </summary> public static void AddListen <T>(string typeName, IObserverBase observerBase) where T : IObserverBase { mvcDictionary.Add(typeName, observerBase); }