У меня есть схема управления, которая имеет несколько настроек и может иметь любое количество подключенных к ней датчиков (каждый с собственным набором настроек). Эти датчики могут использоваться только с цепью управления. Я думал об использовании вложенных классов следующим образом:
public class ControlCircuitLib
{
// Fields.
private Settings controllerSettings;
private List<Sensor> attachedSensors;
// Properties.
public Settings ControllerSettings
{ get { return this.controllerSettings; } }
public List<Sensor> AttachedSensors
{ get { return this.attachedSensors; } }
// Constructors, methods, etc.
...
// Nested classes.
public class Settings
{
// Fields.
private ControlCircuitLib controllerCircuit;
private SerialPort controllerSerialPort;
private int activeOutputs;
... (many, many more settings)
// Properties.
public int ActiveOutputs
{ get { return this.activeOutputs; } }
... (the other Get properties for the settings)
// Methods.
... (method to set the circuit properties though serial port)
}
public class Sensor
{
// Enumerations.
public enum MeasurementTypes { Displacement, Velocity, Acceleration };
// Fields.
private ControlCircuitLib controllerCircuit;
private string sensorName;
private MeasurementTypes measurementType;
private double requiredInputVoltage;
... (many, many more settings)
// Properties.
public string SensorName {...}
... (Get properties)
// Methods.
... (methods to set the sensor settings while attached to the control circuit)
}
}
Я прочитал, что публичные вложенные классы являются "нет-нет", но есть исключения. Является ли эта структура ОК или есть лучший вариант?
Спасибо!
ИЗМЕНИТЬ
Ниже представлена грубая иерархия схемы управления, для которой я пытаюсь написать класс библиотеки; Я использовал форматирование кода для предотвращения переноса текста.
Control Circuit (com. via serial port) -> Attached Sensors (up to 10) -> Sensor Settings (approx. 10 settings per sensor)
Basic Controller Settings (approx. 20 settings)
Output Settings (approx. 30 settings)
Common Settings (approx. 30 settings)
Environment Settings (approx. 10 settings)
Все настройки устанавливаются через контроллер, но я хотел бы, чтобы организованная библиотека вместо того, чтобы просто набивать все ~ 100 методов, свойств и настроек в одном классе Controller
. Было бы хорошо, если бы кто-то мог предложить короткий пример, в котором излагается структура, которую они будут использовать. Спасибо!