消息分发机制的简单实现

消息分发机制:

简单来说就是你触发了某个事件时,会把对应的消息分发下去,这个消息你可以选择接收或者不收,代码也不会报错。而当你在某个代码中注册了这个事件的监听,你就可以收到该事件发来的消息,但使用完要记得移除监听。

代码如下:

public class MyEventMsg
    {

        public delegate void DelHandler(MyMessage a);

        public static Dictionary<string, DelHandler> delHandelDic = new Dictionary<string, DelHandler>();

        /// <summary>
        /// 添加监听
        /// </summary>
        /// <param name="eventString"></param>
        /// <param name="delHandler"></param>
        public static void AddListener(string eventString, DelHandler delHandler)
        {
            if (!delHandelDic.ContainsKey(eventString))
            {
                delHandelDic.Add(eventString, null);
            }
            delHandelDic[eventString] += delHandler;
        }

        /// <summary>
        /// 移除监听
        /// </summary>
        /// <param name="eventString"></param>
        /// <param name="delHandler"></param>
        public static void RemoveListener(string eventString, DelHandler delHandler)
        {
            if (delHandelDic.ContainsKey(eventString))
            {
                delHandelDic[eventString] -= delHandler;
            }
        }

        public static void ClearAllListener()
        {
            if (delHandelDic != null)
                delHandelDic.Clear();
        }
        /// <summary>
        /// 消息分发
        /// </summary>
        /// <param name="eventString"></param>
        /// <param name="msg"></param>
        public static void MessageDispatch(string eventString, MyMessage msg = null)
        {
            DelHandler del;
            if (delHandelDic.TryGetValue(eventString, out del))
            {
                if (del != null)
                    del.Invoke(msg);
            }
        }
    }

    public class MyMessage
    {
        public string msg;
        public int value;

        public MyMessage()
        {

        }
        public MyMessage(string msg, int value)
        {
            this.msg = msg;
            this.value = value;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值