/// <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) { } WriteArray(writer, (Array)graph, context); }
/// <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) { } using (writer.BeginArray(ObjectType.Name)) { foreach (var item in (IEnumerable)graph) { Element.Serialize(writer, item, context); } } }
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); } } }
public void WriteCall(Stream stream, params object[] arguments) { if (null == stream) { throw new ArgumentNullException(nameof(stream)); } var serializationScheme = GetSerializationScheme(); using (var writer = new HessianOutputWriter(stream)) { var context = new HessianSerializationContext(); serializationScheme.Serialize(writer, arguments, context); } }
/// <summary> /// Serializes a specified object to binary data and writes the resulting to a stream. /// </summary> /// <param name="stream">The <see cref="System.IO.Stream" /> that is written to.</param> /// <param name="graph">The object that contains the data to write to the stream.</param> public void WriteObject(Stream stream, object graph) { if (null == stream) { throw new ArgumentNullException(nameof(stream)); } var factory = new HessianObjectSerializerFactory(); var scheme = HessianSerializationScheme.CreateFromType(type, factory); using (var writer = new HessianOutputWriter(stream)) { var context = new HessianSerializationContext(); scheme.Serialize(writer, graph, context); } }
public void Serialize(HessianOutputWriter writer, object graph, HessianSerializationContext context) { if (null == graph) { writer.WriteNull(); return; } using (writer.BeginCall(MethodInfo.Name)) { var parameters = (Array)graph; for (var index = 0; index < Arguments.Count; index++) { Arguments[index].Serialize(writer, parameters.GetValue(index), context); } } /*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) * { * * }*/ /*using (writer.BeginArray(ObjectType.Name)) * { * foreach (var item in (IEnumerable)graph) * { * Element.Serialize(writer, item, context); * } * }*/ }
/// <inheritdoc /> 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);*/ writer.WriteBytes((byte[])graph); }
/// <inheritdoc cref="ISerializationElement.Serialize" /> public void Serialize(HessianOutputWriter writer, object graph, HessianSerializationContext context) { 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) { writer.BeginClassDefinition(); writer.WriteString(ClassName); writer.WriteInt32(ObjectProperties.Count); foreach (var property in ObjectProperties) { writer.WriteString(property.PropertyName); } writer.EndClassDefinition(); index = context.Classes.Count; context.Classes.Add(ObjectType); } writer.WriteObjectReference(index); foreach (var item in ObjectProperties) { var value = item.Property.GetPropertyValue(graph); item.Serialize(writer, value, context); } }
/// <inheritdoc cref="ISerializationElement.Serialize" /> public void Serialize(HessianOutputWriter writer, object graph, HessianSerializationContext context) { Element.Serialize(writer, graph, context); }
/// <inheritdoc cref="ISerializationElement.Serialize" /> public void Serialize(HessianOutputWriter writer, object graph, HessianSerializationContext context) { ObjectSerializer.Serialize(writer, graph); }