Я работаю над модульным проектом, состоящим из нескольких датчиков, каждый из которых наследуется от абстрактного Sensor
класса. Для настройки каждого датчика я начал добавлять пользовательскую панель управления для каждого датчика (наследуется от UserControl
), которая загружается во время выполнения и отображается на панели вызывающим приложением.
Но затем я понял, что для изменения свойств датчика из элемента управления класс Control
должен иметь доступ к этим свойствам или датчик должен подписаться на изменения настроек конфигурации в пользовательском элементе управления. Это не кажется правильным, однако, контроль должен контролировать датчик.
Какое самое элегантное решение для управления моими датчиками без создания адского делегата?
Должен ли я продолжить путь:
class TestSensor : Sensor
{
public UserControl ControlPanel { get; } // returns a TestSensorControl
// ...
}
или мои датчики должны быть созданы внутри моих элементов управления:
class TestSensorControl : UserControl
{
private TestSensor _sensor;
public TestSensor Sensor {
get {
return _sensor;
}
}
// ...
}
Датчики отвечают за проверку изменений состояния и передачу их вызывающему приложению, сигнализируя событие OnSensorEvent(...)
.
Кроме того, мой базовый Sensor
класс может наследоваться от UserControl, и мой SensorControl может наследовать от него, устраняя необходимость в промежуточном классе управления.