public void RegisterCallback <T>(Action <T> callback) where T : IResponse, new() { if (callback == null) { throw new ArgumentNullException("callback"); } List <CallbackContainer> callbacks; if (_callbackHandlers.TryGetValue(typeof(T), out callbacks) == false) { _callbackHandlers[typeof(T)] = callbacks = new List <CallbackContainer>(); } callbacks.Add(CallbackContainer.Create(callback)); }
protected override void AddCallbackForPinValueChangedEvent(int pinNumber, PinEventTypes eventTypes, PinChangeEventHandler callback) { lock (_callbackContainersLock) { if (_callbackContainers.TryGetValue(pinNumber, out var cb)) { cb.EventTypes = cb.EventTypes | eventTypes; cb.OnPinChanged += callback; } else { var cb2 = new CallbackContainer(pinNumber, eventTypes); cb2.OnPinChanged += callback; _callbackContainers.Add(pinNumber, cb2); } } }