Непонятная реализация EventAggregator - C#

Узнай цену своей работы

Формулировка задачи:

В чем глубокий смысл lables в данной реализации агрегатора событий?
public class EventContainer
    {
        private Dictionary<Type, List<Action<object>>> subscribers = new Dictionary<Type, List<Action<object>>>();
        private Dictionary<object, Action<object>> lables = new Dictionary<object, Action<object>>();
        public Dictionary<Type, List<Action<object>>> Subscribers
        {
            get { return subscribers; }
        }
 
        public void Subscribe<T>(Action<T> e)
        {
            List<Action<object>> l;
            if (!subscribers.TryGetValue(typeof(T), out l))
            {
                l = new List<Action<object>>();
                subscribers.Add(typeof(T), l);
            }
            Action<object> a =
                delegate(object o) { e((T) o); };
            lables.Add( e, a);
            l.Add(a);
            
        }
 
        public void UnSubscribe<T>(Action<T> e)
        {
            if (lables.ContainsKey(e))
            {
                List<Action<object>> l;
                if (subscribers.TryGetValue(typeof(T), out l))
                {
 
                    l.Remove(lables[e]);
                    lables.Remove(e);
                }
            }
           
        }
 
        public void Event<T>( T arg )
        {
            List<Action<object>> actions;
            if (subscribers.TryGetValue(typeof(T), out actions))
            {
                foreach (Action<object> act in actions)
                {
                   act(arg);
                }
            }
        }
    }

Решение задачи: «Непонятная реализация EventAggregator»

textual
Листинг программы
if (lables.ContainsKey(e))
            { ....

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы