/// <remarks>Recursive</remarks> private void Explore(ObjectElement node) { System.Diagnostics.Debug.Assert(VisitedObjects != null, "Property 'VisitedElements' is not set"); System.Diagnostics.Debug.Assert(node != null, "Parameter 'node' is not set"); System.Diagnostics.Debug.Assert(node.Children != null, "Node's children is not set"); int id = node.GetHashCode(); if (VisitedObjects.ContainsKey(id)) { return; } int[] children = null; if (node.Children.Count > 0) { children = new int[node.Children.Count]; for (int i = 0; i < node.Children.Count; ++i) { children[i] = node.Children[i].GetHashCode(); } } var name_translatable = node.Name as TranslatableElement; var value_translatable = node.Value as TranslatableElement; var xmlNode = new SerializableNode { ID = id, Type = node.Type, NameTranslatable = name_translatable != null ? new SerializableTranslatable(name_translatable) : null, NameString = name_translatable == null ? (string)node.Name : null, Class = node.ClassName, ValueTranslatable = value_translatable != null ? new SerializableTranslatable(value_translatable) : null, ValuePrimitive = value_translatable == null ? new SerializablePrimitive(node.Value) : null, StackTrace = node.StackTrace, Children = children }; VisitedObjects.Add(node.GetHashCode(), xmlNode); foreach (var childNode in node.Children) { Explore(childNode); } }
/// <remarks>Recursive</remarks> private void Explore(ObjectElement node) { System.Diagnostics.Debug.Assert( VisitedObjects != null, "Property 'VisitedElements' is not set" ); System.Diagnostics.Debug.Assert( node != null, "Parameter 'node' is not set" ); System.Diagnostics.Debug.Assert( node.Children != null, "Node's children is not set" ); int id = node.GetHashCode(); if( VisitedObjects.ContainsKey(id) ) return; int[] children = null; if( node.Children.Count > 0 ) { children = new int[ node.Children.Count ]; for( int i=0; i<node.Children.Count; ++i ) children[i] = node.Children[i].GetHashCode(); } var name_translatable = node.Name as TranslatableElement; var value_translatable = node.Value as TranslatableElement; var xmlNode = new SerializableNode { ID = id, Type = node.Type, NameTranslatable = name_translatable != null ? new SerializableTranslatable(name_translatable) : null, NameString = name_translatable == null ? (string)node.Name : null, Class = node.ClassName, ValueTranslatable = value_translatable != null ? new SerializableTranslatable(value_translatable) : null, ValuePrimitive = value_translatable == null ? new SerializablePrimitive(node.Value) : null, StackTrace = node.StackTrace, Children = children }; VisitedObjects.Add( node.GetHashCode(), xmlNode ); foreach( var childNode in node.Children ) Explore( childNode ); }