Пример #1
0
        /// <summary>
        /// 注册消息处理
        /// </summary>
        /// <param name="self">this扩展,this必须是 ImsgReceiver 的实例</param>
        /// <param name="MsgType"> 消息名 </param>
        /// <param name="Callback"> 回调函数,无返回值,支持任意类型,任意长度的参数 </param>
        public static void AddMessageHandler(this IMsgReceiver self, ECustomMessageType MsgType, DelegateCustomMessage Callback)
        {
            if (MsgType == ECustomMessageType.NULL)
            {
                CLOG.E("error msg type is {0}", MsgType);
                return;
            }

            if (Callback == null)
            {
                CLOG.E("none call back!!", MsgType);
                return;
            }

            if (!m_MsgHandlerList.ContainsKey(MsgType))
            {
                // 如果不包含这个Key,那么就创建他
                m_MsgHandlerList[MsgType] = new List <LogicMsgHandler>();
            }

            // 防止反复注册
            foreach (var item in m_MsgHandlerList[MsgType])
            {
                if (item.m_Receiver == self && item.m_Callback == Callback)
                {
                    return;
                }
            }

            // 注册
            m_MsgHandlerList[MsgType].Add(new LogicMsgHandler(self, Callback));
        }
Пример #2
0
 public LogicMsgHandler(IMsgReceiver receiver, DelegateCustomMessage Callback)
 {
     m_Receiver = receiver;
     m_Callback = Callback;
 }