public object Deserialize(HessianInputReader reader, HessianSerializationContext context) { reader.BeginObject(); if (reader.IsClassDefinition) { var className = reader.ReadString(); var propertiesCount = reader.ReadInt32(); if (!String.Equals(ClassName, className)) { throw new HessianSerializerException(); } if (ObjectProperties.Count != propertiesCount) { throw new HessianSerializerException(); } for (var index = 0; index < propertiesCount; index++) { var propertyName = reader.ReadString(); var exists = ObjectProperties.Any(property => String.Equals(property.PropertyName, propertyName)); if (!exists) { throw new HessianSerializerException(); } } context.Classes.Add(ObjectType); reader.EndClassDefinition(); } else if (reader.IsInstanceReference) { var index = reader.ReadInstanceReference(); return(context.Instances[index]); } var number = reader.ReadObjectReference(); var instance = Activator.CreateInstance(ObjectType); context.Instances.Add(instance); foreach (var item in ObjectProperties) { var value = item.Deserialize(reader, context); item.Property.SetValue(instance, value); } reader.EndObject(); return(instance); }
/// <summary> /// /// </summary> /// <param name="stream"></param> /// <returns></returns> public object ReadObject(Stream stream) { if (null == stream) { throw new ArgumentNullException(nameof(stream)); } var scheme = HessianSerializationScheme.CreateFromType(type); using (var reader = new HessianInputReader(stream)) { var context = new HessianSerializationContext(); return(scheme.Deserialize(reader, context)); } }
public object Deserialize(HessianInputReader reader, HessianSerializationContext context) { return(ObjectSerializer.Deserialize(reader)); }
public object Deserialize(HessianInputReader reader, HessianSerializationContext context) { return(Element.Deserialize(reader, context)); }
public object Deserialize(HessianInputReader reader) { return(reader.ReadInt64()); }
public object Deserialize(HessianInputReader reader) { return(reader.ReadBoolean()); }
public object Deserialize(HessianInputReader reader) { var bytes = reader.ReadBytes(); return(new Guid(bytes)); }
public object Deserialize(HessianInputReader reader) { return(reader.ReadDateTime()); }