using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace JwKdsV.Core.MessageEvent { /// /// 消息事件管理器 /// public class MsgEventsContainer { public MsgEventsContainer() { eventsList = new Dictionary(); } #region 属性|字段 private Dictionary eventsList; #endregion #region 方法 public void AddListener(string msgType , EventHandler func , object _receiver , bool isOnce) { if (eventsList.ContainsKey(msgType) == false) { MsgEventProvider _msgEventProvider = new MsgEventProvider(msgType); eventsList.Add(msgType , _msgEventProvider); } MsgEventProvider msgEventProvider = eventsList[msgType]; #region 构建消息接收对象 MsgReceiver receiver = new MsgReceiver(); receiver.IsOnce = isOnce; receiver.ReceiverObj = _receiver; receiver.appEventHandler = func; #endregion msgEventProvider.AddListener(receiver); } public void RemoveListener(string msgType , EventHandler func , object _receiver) { if (eventsList.ContainsKey(msgType) == false) return; MsgEventProvider msgEventProvider = eventsList[msgType]; #region 构建消息接受者对象 MsgReceiver receiver = new MsgReceiver(); receiver.IsOnce = true; receiver.ReceiverObj = _receiver; receiver.appEventHandler = func; #endregion msgEventProvider.RemoveListener(receiver); } public void Run(Object sender , MsgEventArgs args) { string msgType = args.EventType; //未存在注册的消息事件,则直接返回 if (eventsList.ContainsKey(msgType) == false) return; MsgEventProvider msgEventProvider = eventsList[msgType]; msgEventProvider.Run(sender , args); } public MsgEventProvider GetAllProvider(string msgType) { if (eventsList.ContainsKey(msgType) == false) return null; return eventsList[msgType]; } #endregion } }