Exemple #1
0
        private void UnSubscribe(object subscriber, SubscriberMethod method)
        {
            int eventId = method.EventId;

            if (!_subMap.ContainsKey(eventId))
            {
                return;
            }
            List <Subscription> subList       = _subMap[eventId];
            List <Subscription> removeSubList = new List <Subscription>();

            for (int i = 0; i < subList.Count; i++)
            {
                Subscription subscription = subList[i];
                if (subscription.Subscriber == subscriber)
                {
                    removeSubList.Add(subscription);
                }
            }

            for (int i = 0; i < removeSubList.Count; i++)
            {
                subList.Remove(removeSubList[i]);
            }
        }
Exemple #2
0
        public void UnRegister(object subscriber)
        {
            Type subClass = subscriber.GetType();
            List <SubscriberMethod> methodList = FindSubscriberMethods(subClass);

            for (int i = 0; i < methodList.Count; i++)
            {
                SubscriberMethod method = methodList[i];
                UnSubscribe(subscriber, method);
            }
        }
Exemple #3
0
        private void Subscribe(object subscriber, SubscriberMethod method)
        {
            int eventId = method.EventId;

            if (!_subMap.ContainsKey(eventId))
            {
                _subMap.Add(eventId, new List <Subscription>());
            }
            List <Subscription> subList = _subMap[eventId];

            subList.Add(new Subscription(subscriber, method));
        }
Exemple #4
0
        private List <SubscriberMethod> FindSubscriberMethods(Type subscriberClass)
        {
            List <SubscriberMethod> rlt = new List <SubscriberMethod>();

            MethodInfo[] methods = subscriberClass.GetMethods();

            for (int i = 0; i < methods.Length; i++)
            {
                MethodInfo         method = methods[i];
                SubscribeAttribute attr   = method.GetCustomAttribute <SubscribeAttribute>();
                if (attr != null)
                {
                    SubscriberMethod m = new SubscriberMethod();
                    m.EventId = attr.EventId;
                    m.Method  = method;
                    rlt.Add(m);
                }
            }
            return(rlt);
        }
 public Subscription(object subscriber, SubscriberMethod method)
 {
     Subscriber = subscriber;
     Method     = method;
 }