/// <summary>
        /// Constructor for <see cref="FeedingSlot"/>
        /// </summary>
        public FeedingSlot(string name, IGateDevice gate, IDigitalSensor sensor, IEnumerable <FeedingSlot> dependendSlots, IThingsResource thingsResource)
        {
            _gate           = gate;
            _sensor         = sensor;
            _dependendSlots = dependendSlots.ToArray();

            Name = name;
        }
        /// <summary>
        /// Default constructor for <see cref="FeedingSlot"/>
        /// </summary>
        /// <param name="slotConfig"></param>
        /// <param name="dependendSlots"></param>
        /// <param name="thingsResource"></param>
        public FeedingSlot(FeedingSlotOptions options, IEnumerable <FeedingSlot> dependendSlots, IThingsResource thingsResource)
        {
            _gate        = thingsResource.GetDevice <IGateDevice>(options.FlapId);
            BypassSensor = options.BypassSensor;

            _sensor         = BypassSensor ? null : thingsResource.GetDevice <IDigitalSensor>(options.SensorId);
            _dependendSlots = dependendSlots == null ? new FeedingSlot[0] : dependendSlots.ToArray();

            Name = options.Name;
        }