/// <summary> /// Конструирует модель просмотра для представления предоставленных данных DeviceDetaill /// </summary> /// <param name="device">Данные, для которых должны быть сконструирована модель ViewModel</param> /// <returns>Сконструированная модель ViewModel или null, если она не может быть построена</returns> public static DeviceDetaillViewModel BuildViewModel(DeviceDetail device) { if (device == null) { throw new ArgumentNullException(nameof(device)); } DeviceBRS1M tuning = device as DeviceBRS1M; if (tuning != null) { return(new DeviceBRS1MViewModel(tuning)); } return(null); }
/// <summary> /// Сохранить все устройства в конфигурации /// </summary> public virtual void SaveDeviceDetails() { Dictionary <string, DeviceBRS1M> BRS1Ms = new Dictionary <string, DeviceBRS1M>(); bool needToSave = false; // просмотреть список параметров и добавить в специализированные коллекции foreach (DeviceDetail device in devices) { if (device.IsDirty) { needToSave = true; break; } } if (IsDirty || needToSave) { // просмотреть список параметров и добавить в специализированные коллекции // если имя параметра было оставлено пользователем по умолчанию, // то его во избежание коллизии уникальности переназначить имя как Guid foreach (DeviceDetail device in devices) { DeviceBRS1M tuningParameter = device as DeviceBRS1M; if (tuningParameter != null) { if (tuningParameter.ParameterName == USER_TEXT_CONTROL_BAROMETER || BRS1Ms.ContainsKey(tuningParameter.ParameterName)) { tuningParameter.ParameterName = Guid.NewGuid().ToString(); } BRS1Ms.Add(tuningParameter.ParameterName, tuningParameter); } } PartDevices allBRS1Ms = new PartDevices(BRS1Ms); // серелизация JSON в строку, а затем запись строки в файл File.WriteAllText(puthPartSetting, JsonConvert.SerializeObject(allBRS1Ms, Formatting.Indented)); // сбросить флаг IsDirty после сохранения изменений IsDirty = false; foreach (DeviceDetail device in devices) { device.IsDirty = false; } } }
//private const string partBarometersSetting = "D:\\PartParametersString.json"; private void TestDictionarySerialize() { Dictionary <string, DeviceBRS1M> deviceBRS1Ms = new Dictionary <string, DeviceBRS1M>(); DeviceBRS1M d1 = new DeviceBRS1M { ParameterName = "Name Registration1", PortName = "COM3", Parity = Parity.None, StopBits = StopBits.One, DataBits = 8, BaudRate = 1200, ClearOnOpen = false, ClearWithDTR = false, CurrentDataMode = DataMode.Hex, UnitInput = UnitOfMeasureInput.гПаВх, UnitOutput = UnitOfMeasureOutput.гПаВых }; DeviceBRS1M d2 = new DeviceBRS1M { ParameterName = "Name Registration2", PortName = "COM3", Parity = Parity.None, StopBits = StopBits.One, DataBits = 8, BaudRate = 1200, ClearOnOpen = false, ClearWithDTR = false, CurrentDataMode = DataMode.Hex, UnitInput = UnitOfMeasureInput.гПаВх, UnitOutput = UnitOfMeasureOutput.гПаВых }; deviceBRS1Ms.Add(d1.ParameterName, d1); deviceBRS1Ms.Add(d2.ParameterName, d2); PartDevices allParameters = new PartDevices { All_BRS_1M = deviceBRS1Ms }; json = JsonConvert.SerializeObject(allParameters, Formatting.Indented); //json = JsonConvert.SerializeObject(calculated) //Console.WriteLine(json) // серелизация JSON в строку, а затем запись строки в файл File.WriteAllText(partBarometersSetting, JsonConvert.SerializeObject(allParameters, Formatting.Indented)); }
/// <summary> /// Инициализирует новый экземпляр класса DeviceBRS1MViewModel. /// </summary> /// <param name="inDeviceBRS1M">Базовый базовое устройство, на котором должна быть основана эта модель ViewModel</param> public DeviceBRS1MViewModel(DeviceBRS1M inDeviceBRS1M) { _DeviceBRS1M = inDeviceBRS1M ?? throw new ArgumentNullException(nameof(inDeviceBRS1M)); }