Example #1
0
        public void  用广播()
        {
            IMulEventListener <CMsg> listener1 = Substitute.For <IMulEventListener <CMsg> >();
            IMulEventListener <CMsg> listener2 = Substitute.For <IMulEventListener <CMsg> >();

            listener1.StartListening(TAG);
            listener2.StartListening(TAG2);
            CMsg.Trigger(TAG, "name");
            CMsg.Trigger(TAG2, "name2");
            //检测OnEvent是否调用,并且第一个参数是CMsg,第二个参数是对应的TAG
            listener1.Received().OnEvent(Arg.Any <CMsg>(), TAG);
            listener2.Received().OnEvent(Arg.Any <CMsg>(), TAG2);
        }
Example #2
0
        public static void Register <T>(IMulEventListener <T> listener, string tag) where T : class
        {
            Type eventType = typeof(T);

            if (!mulSubscribersDic.ContainsKey(eventType))
            {
                mulSubscribersDic[eventType] = new List <MulEventListenerContainer>();
            }

            if (!MulSubscriptionExists(eventType, listener, tag))
            {
                mulSubscribersDic[eventType].Add(new MulEventListenerContainer(tag, listener));
            }
        }
Example #3
0
        public static void UnRegister <T>(IMulEventListener <T> listener, string tag) where T : class
        {
            Type eventType = typeof(T);

            if (!mulSubscribersDic.ContainsKey(eventType))
            {
#if EVENTROUTER_THROWEXCEPTIONS
                throw new ArgumentException(string.Format("Removing listener \"{0}\", but the event type \"{1}\" isn't registered.", listener, eventType.ToString()));
#else
                return;
#endif
            }

            List <MulEventListenerContainer> mulSubscriberList = mulSubscribersDic[eventType];
#pragma warning disable 219
            bool listenerFound = false;
#pragma warning restore 219

            for (int i = 0; i < mulSubscriberList.Count; i++)
            {
                if (mulSubscriberList[i].Tag != tag || mulSubscriberList[i].MulEventListener != listener)
                {
                    continue;
                }
                mulSubscriberList.Remove(mulSubscriberList[i]);
                listenerFound = true;

                if (mulSubscriberList.Count == 0)
                {
                    subscribersDic.Remove(eventType);
                }

                return;
            }

#if EVENTROUTER_THROWEXCEPTIONS
            if (!listenerFound)
            {
                throw new ArgumentException(string.Format("Removing listener, but the supplied receiver isn't subscribed to event type \"{0}\".", eventType.ToString()));
            }
#endif
        }
Example #4
0
 public static void StopListening <T>(this IMulEventListener <T> caller, string tag) where T : class
 {
     EventManager.UnRegister(caller, tag);
 }