/// <summary> /// Register a trigger /// </summary> /// <param name="trigger">The trigger</param> public void RegisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new() { var triggerList = this._triggers.GetOrAdd(typeof(T), x => new List <ISterlingTrigger>()); lock (((ICollection)triggerList).SyncRoot) { triggerList.Add(trigger); } }
/// <summary> /// Register a trigger /// </summary> /// <param name="trigger">The trigger</param> public void RegisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new() { if (!_triggers.ContainsKey(typeof(T))) { lock (((ICollection)_triggers).SyncRoot) { if (!_triggers.ContainsKey(typeof(T))) { _triggers.Add(typeof(T), new List <ISterlingTrigger>()); } } } _triggers[typeof(T)].Add(trigger); }
/// <summary> /// Unregister the trigger /// </summary> /// <param name="trigger">The trigger</param> public void UnregisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new() { if (!this._triggers.ContainsKey(typeof(T))) { return; } if (this._triggers.TryGetValue(typeof(T), out List <ISterlingTrigger> triggerlist)) { lock (((ICollection)triggerlist).SyncRoot) { if (triggerlist.Contains(trigger)) { triggerlist.Remove(trigger); } } } }
/// <summary> /// Unregister the trigger /// </summary> /// <param name="trigger">The trigger</param> public void UnregisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new() { if (!_triggers.ContainsKey(typeof(T))) { return; } if (_triggers[typeof(T)].Contains(trigger)) { lock (((ICollection)_triggers).SyncRoot) { if (_triggers[typeof(T)].Contains(trigger)) { _triggers[typeof(T)].Remove(trigger); } } } }