Непонятная реализация 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)) { ....
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д