Example #1
0
        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));
            }
        }
Example #3
0
 public object Deserialize(HessianInputReader reader, HessianSerializationContext context)
 {
     return(ObjectSerializer.Deserialize(reader));
 }
Example #4
0
 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());
 }