/// <summary> /// Copies the template properties from the source template. /// </summary> public virtual void CopyFrom(DeviceTemplate srcTemplate) { if (srcTemplate == null) { throw new ArgumentNullException("srcTemplate"); } // копирование настроек шаблона Sett.CopyFrom(srcTemplate.Sett); // копирование групп элементов ElemGroups.Clear(); foreach (ElemGroup srcGroup in srcTemplate.ElemGroups) { ElemGroup destGroup = CreateElemGroup(srcGroup.TableType); destGroup.CopyFrom(srcGroup); ElemGroups.Add(destGroup); } // копирование команд Cmds.Clear(); foreach (ModbusCmd srcCmd in srcTemplate.Cmds) { ModbusCmd destCmd = CreateModbusCmd(srcCmd.TableType, srcCmd.Multiple); destCmd.CopyFrom(srcCmd); Cmds.Add(destCmd); } }
/// <summary> /// Копировать модель устройства из заданной /// </summary> public void CopyFrom(DeviceTemplate srcTemplate) { if (srcTemplate == null) { throw new ArgumentNullException("srcTemplate"); } // очистка списков групп элементов и команд ElemGroups.Clear(); Cmds.Clear(); // копирование групп элементов foreach (ElemGroup srcGroup in srcTemplate.ElemGroups) { ElemGroup elemGroup = new ElemGroup(srcGroup.TableType) { Name = srcGroup.Name, Address = srcGroup.Address, Active = srcGroup.Active, StartKPTagInd = srcGroup.StartKPTagInd, StartSignal = srcGroup.StartSignal, }; foreach (Elem srcElem in srcGroup.Elems) { elemGroup.Elems.Add(new Elem() { Name = srcElem.Name, ElemType = srcElem.ElemType, ByteOrder = srcElem.ByteOrder, // копируется ссылка на массив ByteOrderStr = srcElem.ByteOrderStr }); } ElemGroups.Add(elemGroup); } // копирование команд foreach (ModbusCmd srcCmd in srcTemplate.Cmds) { Cmds.Add(new ModbusCmd(srcCmd.TableType) { Multiple = srcCmd.Multiple, ElemCnt = srcCmd.ElemCnt, Address = srcCmd.Address, Name = srcCmd.Name, CmdNum = srcCmd.CmdNum }); } }