public virtual void Add(CSharpConstruct construct) { if (construct == this) { throw new InvalidOperationException(); } if (construct is Property property) { if (!Properties.Contains(property)) { Properties.Add(property); } } if (construct is Method method) { if (!Methods.Contains(method)) { Methods.Add(method); } } if (construct is Object @object) { if (!InnerObjects.Contains(@object)) { InnerObjects.Add(@object); } } }
/// <summary> /// Определение вложенных объектов /// </summary> /// <param name="level">Уровень вложенности по типу объекта</param> internal void DefineInners(DbSet <Object_cascade> objCascade, ObjectTypeEnum level, ref List <ObjectMDM> levelObjects) { if (ObjectType > level) { return; } if (ObjectType == level) { levelObjects.Add(this); return; } var innersObjDB = objCascade.Where(w => w.Object_id_parent == Id); foreach (var item in innersObjDB) { var innerObj = new ObjectMDM(item, this); InnerObjects.Add(innerObj); innerObj.DefineInners(objCascade, level, ref levelObjects); } }