/// <inheritdoc cref="ISerializationElement.Serialize" />
        public void Serialize(HessianOutputWriter writer, object graph, HessianSerializationContext context)
        {
            if (null == graph)
            {
                writer.WriteNull();
                return;
            }

            var index = context.Instances.IndexOf(graph);

            if (index > -1)
            {
                writer.WriteInstanceReference(index);
                return;
            }

            context.Instances.Add(graph);

            index = context.Classes.IndexOf(ObjectType);

            if (0 > index)
            {
            }

            var collection = (ICollection)graph;

            using (writer.BeginFixedArray(ObjectType.Name, collection.Count))
            {
                foreach (var item in collection)
                {
                    Element.Serialize(writer, item, context);
                }
            }
        }
예제 #2
0
        private void WriteArray(HessianOutputWriter writer, Array array, HessianSerializationContext context)
        {
            using (writer.BeginFixedArray(ObjectType.Name, array.Length))
            {
                var index = array.GetLowerBound(0);
                var end   = array.GetUpperBound(0);

                for (; index <= end; index++)
                {
                    var item = array.GetValue(index);
                    Element.Serialize(writer, item, context);
                }
            }
        }