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); }
public object Deserialize(HessianInputReader reader) { return(reader.ReadString()); }