Ejemplo n.º 1
0
        public object Deserialize(ICommodityReader reader, Type nominalType)
        {
            BsonType bsonType = reader.ReadBsonType();

            switch (bsonType)
            {
            case BsonType.Null:
                return(null);

                break;

            case BsonType.Document:
                reader.ReadStartOfObject();
                var  typeName   = reader.ReadName();
                Type actualType = CommoditySerializer.Deserialize <Type>(reader);
                // Create type
                object instance  = InstantiateType(actualType);
                var    valueName = reader.ReadName();  // is always "v"
                reader.ReadStartOfObject();
                DeserializeAttributes(reader, actualType, instance);
                reader.ReadEndOfObject();
                reader.ReadEndOfObject();
                return(instance);

                break;
            }
            throw new Exception("nothing to deserialize?");
            return(null);
        }
Ejemplo n.º 2
0
        internal static T Deserialize <T>(ICommodityReader reader)
        {
            var nominalType = typeof(T);

            return((T)Deserialize(reader, typeof(T)));
            //ICommoditySerializer o = EnsureSerializer(nominalType);
            //return (T)o.Deserialize(reader, nominalType);
        }
Ejemplo n.º 3
0
        private void DeserializeAttributes(ICommodityReader reader, Type actualType, object instance)
        {
            var serializableMembers = GetSerializableMemberInfos(actualType);

            //var bsonType = ;
            // loop over reader
            while (reader.ReadBsonType() != BsonType.EndOfDocument)
            {
                string name = reader.ReadName();
                // find name in the serializableMembers
                CommodityMemberInfoSerializer memberInfoSerializer = serializableMembers.FirstOrDefault(member => member.Name == name);
                if (memberInfoSerializer == null)
                {
                    throw new Exception("Member not found.");
                }

                // read value (call into deserializer)
                object value = CommoditySerializer.Deserialize(reader, memberInfoSerializer.MemberType);
                memberInfoSerializer.SetValue(instance, value);
            }
        }
Ejemplo n.º 4
0
 public object Deserialize(ICommodityReader reader, Type nominalType)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 5
0
 object ICommoditySerializer.Deserialize(ICommodityReader reader, Type nominalType)
 {
     return(Deserialize(reader));
 }
Ejemplo n.º 6
0
 public abstract T Deserialize(ICommodityReader reader);
Ejemplo n.º 7
0
        public override Type Deserialize(ICommodityReader reader)
        {
            string handle = reader.ReadString();

            return(_typeResolver.GetTypeFromHandle(handle));
        }
Ejemplo n.º 8
0
 public override string Deserialize(ICommodityReader reader)
 {
     return(reader.ReadString());
 }
Ejemplo n.º 9
0
        internal static object Deserialize(ICommodityReader reader, Type nominalType)
        {
            ICommoditySerializer o = EnsureSerializer(nominalType);

            return(o.Deserialize(reader, nominalType));
        }