protected virtual ElementFieldFlags UpdateElement( ElementBase elem, InfContentsElem17 cttElem, InfElementsElemContainer17 elElem) { #if DEBUG && !DEBUG_IN_PROD LogTo.Debug("[{0} {1}] Updating", elem.GetType().Name, elem.Id); #endif ElementFieldFlags flags = ElementFieldFlags.None; void UpdateFlag(object sender, PropertyChangedEventArgs e) { var fieldFlag = ElementBase.FieldFlagMapping.SafeGet(e.PropertyName); flags |= fieldFlag; } elem.PropertyChanged += UpdateFlag; if (elElem != null) { elem.TitleTextId = elElem._elem.titleTextId; elem.TemplateId = elElem._elem.templateId; elem.ConceptId = elElem._elem.conceptId; elem.ComponentPos = elElem._elem.componPos; // elem.AFactor = elElem._elem.AFactor } if (cttElem != null) { elem.Deleted = cttElem.deleted != 0; elem.ParentId = cttElem.parentId; elem.FirstChildId = cttElem.firstChildId; elem.LastChildId = cttElem.lastChildId; elem.NextSiblingId = cttElem.nextSiblingId; elem.PrevSiblingId = cttElem.prevSiblingId; elem.DescendantCount = cttElem.descendantCount; elem.ChildrenCount = cttElem.childrenCount; } elem.PropertyChanged -= UpdateFlag; elem.OnUpdated(flags); return(flags); }