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); }
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))); } }