Пример #1
0
        public ILamp RegisterLamp(IArea area, Enum id, ILampAdapter adapter)
        {
            if (area == null)
            {
                throw new ArgumentNullException(nameof(area));
            }
            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }

            var lamp = new Lamp($"{area.Id}.{id}", adapter);

            area.RegisterComponent(lamp);

            return(lamp);
        }
Пример #2
0
        public Lamp(string id, ILampAdapter adapter)
            : base(id)
        {
            _adapter = adapter ?? throw new ArgumentNullException(nameof(adapter));

            if (adapter.SupportsColor)
            {
                _colorState = new ColorState();
            }

            _commandExecutor.Register <ResetCommand>(c => ResetState());
            _commandExecutor.Register <TurnOnCommand>(c => SetStateInternal(PowerStateValue.On, _colorState));
            _commandExecutor.Register <TurnOffCommand>(c => SetStateInternal(PowerStateValue.Off, _colorState));
            _commandExecutor.Register <TogglePowerStateCommand>(c => TogglePowerState());

            if (_adapter.SupportsColor)
            {
                _commandExecutor.Register <SetColorCommand>(c => SetStateInternal(_powerState, GenerateColorState(c)));
            }
        }