/// <summary> /// PropagatesDependancy all elements /// </summary> /// <param name="obj"></param> /// <param name="visitSubNodes"></param> public override void visit(BaseModelElement obj, bool visitSubNodes) { if (obj.CacheDependancy != null) { BrowsedElements = new HashSet <Utils.ModelElement> { obj }; HashSet <Utils.ModelElement> dependingElements = obj.CacheDependancy; obj.CacheDependancy = null; foreach (Utils.ModelElement depending in dependingElements) { object current = depending; while (current != null) { Utils.ModelElement currentElement = current as Utils.ModelElement; if (currentElement != null) { PropagatesDependancy(currentElement, obj); } IEnclosed enclosed = current as IEnclosed; if (enclosed != null) { current = enclosed.Enclosing; } else { current = null; } } } } base.visit(obj, visitSubNodes); }
public override void AddElementLog(ElementLog log) { if (Enclosing is NameSpace) { base.AddElementLog(log); } else { IEnclosed current = Enclosing as IEnclosed; while (current != null) { ModelElement element = current as ModelElement; if (element != null) { element.AddElementLog(log); current = null; } else { current = current.Enclosing as IEnclosed; } } } }