Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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 );
        }