public object Clone() { IModbusMemoryEntityViewModel memoryEntityViewModel = new ModbusMemoryEntityViewModel(this._memoryBitGettingFunc, this._modbusMemoryEntityGettingFunc, this._modbusConversionParametersViewModel); memoryEntityViewModel.SetUshortValue((ushort)this._modbusMemoryEntity.DirectValue); memoryEntityViewModel.SetAddress(this._address); return(memoryEntityViewModel); }
private void OnModbusMemorySettingsChanged(IModbusMemorySettings modbusMemorySettings) { bool isQueriesWasStartedBefore = false; if (IsQueriesStarted) { isQueriesWasStartedBefore = true; IsQueriesStarted = false; } if (ModbusMemoryEntityViewModels.Count != modbusMemorySettings.NumberOfPoints) { ModbusMemoryEntityViewModels.Clear(); } foreach (IModbusMemoryEntityViewModel modbusMemoryEntityViewModel in ModbusMemoryEntityViewModels) { modbusMemoryEntityViewModel.SetViewSetOption(modbusMemorySettings.IsDiscretOption); } //всякие условия вокруг - оптимизация вывода, чтобы не перерисовывать все каждый раз for (int i = 0; i < modbusMemorySettings.NumberOfPoints; i++) { if (_modbusConversionParametersViewModels.Count < i + 1) { _modbusConversionParametersViewModels.Add( _container.Resolve <IModbusConversionParametersViewModel>()); } if (ModbusMemoryEntityViewModels.Count <= i) { ModbusMemoryEntityViewModel modbusMemoryEntityViewModel = new ModbusMemoryEntityViewModel(_memoryBitViewModelGettingFunc, _modbusMemoryEntityGettingFunc, _modbusConversionParametersViewModels[i]); modbusMemoryEntityViewModel.SetViewSetOption(modbusMemorySettings.IsDiscretOption); modbusMemoryEntityViewModel.SetAddress(modbusMemorySettings.BaseAdress + i); ModbusMemoryEntityViewModels.Add(modbusMemoryEntityViewModel); } else { ModbusMemoryEntityViewModels[i].SetViewSetOption(modbusMemorySettings.IsDiscretOption); ModbusMemoryEntityViewModels[i].SetAddress(modbusMemorySettings.BaseAdress + i); } } if (isQueriesWasStartedBefore) { IsQueriesStarted = true; } else { ModbusMemoryEntityViewModels.ForEach((model => model.SetError())); } }