/// <summary>
        /// 注册事件
        /// </summary>
        /// <param name="onReceive"></param>
        /// <typeparam name="T"></typeparam>
        public static void Register <T>(System.Action <T> onReceive)
        {
            var type = typeof(T);

            IRegisterations registerations = null;

            if (mTypeEventDict.TryGetValue(type, out registerations))
            {
                var reg = registerations as Registerations <T>;
                reg.OnReceives += onReceive;
            }
            else
            {
                var reg = new Registerations <T>();
                reg.OnReceives += onReceive;
                mTypeEventDict.Add(type, reg);
            }
        }
        public IDisposable RegisterEvent<T>(Action<T> onReceive)
        {
            var type = typeof(T);

            IRegisterations registerations = null;

            if (mTypeEventDict.TryGetValue(type, out registerations))
            {
                var reg = registerations as Registerations<T>;
                reg.OnReceives += onReceive;
            }
            else
            {
                var reg = new Registerations<T>();
                reg.OnReceives += onReceive;
                mTypeEventDict.Add(type, reg);
            }

            return new TypeEventUnregister<T> {OnReceive = onReceive};
        }
        /// <summary>
        /// 注册事件
        /// </summary>
        public static void Register <T>(System.Action <T> onReceive)
        {
            var             type           = typeof(T);
            IRegisterations registerations = null;

            // 已经有同一个类型的注册了
            // 只需要在增加委托即可
            if (mTypeEventDict.TryGetValue(type, out registerations))
            {
                var reg = registerations as Registerations <T>;
                reg.OnRecieves += onReceive;
            }

            // 从没注册过该类型
            // 需要创建一个该类型的注册对象
            else
            {
                var reg = new Registerations <T>();
                reg.OnRecieves += onReceive;
                mTypeEventDict.Add(type, reg);
            }
        }