public void Unregister <T>(Action <T> action, object token) { var key = TypeTokenKey.GetKey <T>(token); if (keyActionMap.ContainsKey(key)) { keyActionMap[key].Remove(action); } }
public void Send <T>(T message, object token) { var key = TypeTokenKey.GetKey <T>(token); if (keyActionMap.ContainsKey(key)) { foreach (var action in keyActionMap[key]) { ((Action <T>)action).Invoke(message); } } }
public void Register <T>(Action <T> action, object token) { var key = TypeTokenKey.GetKey <T>(token); if (keyActionMap.ContainsKey(key)) { if (!keyActionMap[key].Any(e => e.Equals(action))) { keyActionMap[key].Add(action); } } else { var list = new List <object>(); list.Add(action); keyActionMap.Add(key, list); } }