public static void AddSignalHandler <TSignal>(this IGalleySignalHandler element, Action <TSignal> action = null) where TSignal : GalleyBaseSignal => _signalsMapping.TryGetValue(typeof(TSignal), out Dictionary <IGalleySignalHandler, object> listeners) .Then(() => listeners[element] = action) .Else(() => _signalsMapping.Add(typeof(TSignal), new Dictionary <IGalleySignalHandler, object> { [element] = action }));
public static void ClearSignalHandlers(this IGalleySignalHandler element) => _signalsMapping.Values.Each(listeners => listeners.Remove(element));
public static void RemoveSignalHandler <TSignal>(this IGalleySignalHandler element) where TSignal : GalleyBaseSignal => _signalsMapping.TryGetValue(typeof(TSignal), out Dictionary <IGalleySignalHandler, object> listeners) .Then(() => listeners.Remove(element));