Esempio n. 1
0
        private void PublishCore(Type type, object eventModel)
        {
            IEventSubscribers subscribers = null;

            if (_subscribers.TryGetValue(type, out subscribers))
            {
                subscribers.Publish(eventModel);
            }
        }
Esempio n. 2
0
        public IEventSubscribers GetSubscribers <TEvent>()
        {
            var type = typeof(TEvent);

            IEventSubscribers subscribers = null;

            _subscribers.TryGetValue(type, out subscribers);

            return(subscribers);
        }
Esempio n. 3
0
        public void Unsubscribe <TEvent>(object subscriber)
        {
            var type = typeof(TEvent);

            IEventSubscribers subscribers = null;

            if (_subscribers.TryGetValue(type, out subscribers))
            {
                var concrete = subscribers as EventSubscribers <TEvent>;

                concrete.RemoveByOwner(subscriber);

                if (concrete.Count == 0)
                {
                    _subscribers.Remove(type);
                }
            }
        }
Esempio n. 4
0
        public void Subscribe <TEvent>(object subscriber, Action <TEvent> handler)
        {
            var type = typeof(TEvent);

            IEventSubscribers subscribers = null;

            if (!_subscribers.TryGetValue(type, out subscribers))
            {
                subscribers = new EventSubscribers <TEvent>();
                _subscribers.Add(type, subscribers);
            }

            var concrete = subscribers as EventSubscribers <TEvent>;

            concrete.Add(new EventSubscriberItem <TEvent>
            {
                Subscriber = subscriber,
                Handler    = handler
            });
        }