示例#1
0
            /// <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);
            }
示例#2
0
 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;
             }
         }
     }
 }