public void AddChild(AssemblyBase asm) { var cont = children.Where(x => x.BlockID == asm.BlockID).FirstOrDefault(); if (cont == null) { this.children.Add(asm); } }
/// <summary> /// Конструктор. /// </summary> /// <param name="templAsm">Сборка - образец/шаблон, на основе которой создаётся текущая сборка.</param> /// <param name="id">адрес стартового блока сборки</param> /// <param name="mode">признак, определяющий, сохранять ссылку на шаблон\образец или нет.</param> public AssemblyBase(AssemblyBase templAsm, BlockAddress id, FOLLOWMODE mode) : base(id, templAsm.BlockType, -1, 0, -1, -1, -1, null, DateTime.Now) { if (mode == FOLLOWMODE.Follow) { this.templAsm = templAsm; } CopyChildrenRequrs(this, templAsm.Children); }
/// <summary> /// Рекурсивное копирование дочерних сборок из источника в целевую сборку. /// </summary> /// <param name="asm">целевая сборка</param> /// <param name="src_children">перечень дочерних сборок сборки-источника</param> private void CopyChildrenRequrs(AssemblyBase asm, List <AssemblyBase> src_children) { foreach (var src_child in src_children) { var newchild = new AssemblyBase(src_child.BlockType); newchild.ParentID = asm.RootBlock_id; newchild.Order = src_child.Order; asm.children.Add(newchild); CopyChildrenRequrs(newchild, src_child.children); } }
/// <summary> /// Конструктор - копировщик. /// </summary> /// <param name="assembly">Исходная сборка.</param> public AssemblyBase(AssemblyBase assembly) : base(assembly.BlockID, assembly.BlockType, assembly.ParentID, assembly.Order, assembly.FactID, assembly.PredecessorID, assembly.SuccessorID, assembly.UserAttrs, assembly.Created) { }