Exemplo n.º 1
0
            public static T Read(Stream stream, T instance, int version)
            {
                var minSupportedVersion = SerializerTypes.GetMinSupported(Type);

                if (version < minSupportedVersion)
                {
                    throw new InvalidDataException(string.Format("Received version less than minimum supported ({0} < {1})", version, minSupportedVersion));
                }

                var boxedInstance = (object)instance;

                while (true)
                {
                    var token = stream.ReadString();
                    if (token == SerializerTypes.TypeEndToken)
                    {
                        break;
                    }

                    if (!FieldsMap.TryGetValue(token, out BinField binField))
                    {
                        continue;
                    }

                    var value = BinSerializer <object> .Deserialize(stream);

                    binField.SetValue(boxedInstance, value);
                }

                return((T)boxedInstance);
            }
Exemplo n.º 2
0
 public static void WriteList <T>(Stream stream, List <T> value)
 {
     stream.Write(value.Count);
     foreach (var current in value)
     {
         BinSerializer.Serialize(stream, current);
     }
 }
Exemplo n.º 3
0
 public static void WriteDictionary <TKey, TValue>(Stream stream, Dictionary <TKey, TValue> value)
 {
     stream.Write(value.Count);
     foreach (var current in value)
     {
         BinSerializer.Serialize(stream, current.Key);
         BinSerializer.Serialize(stream, current.Value);
     }
 }
Exemplo n.º 4
0
        public static List <T> ReadList <T>(Stream stream, List <T> instance, int version)
        {
            var count = stream.ReadInt32();

            instance.Capacity = count;
            for (int i = 0; i < count; i++)
            {
                var value = BinSerializer.Deserialize <T>(stream);
                instance.Add(value);
            }
            return(instance);
        }
Exemplo n.º 5
0
        public static Dictionary <TKey, TValue> ReadDictionary <TKey, TValue>(Stream stream, Dictionary <TKey, TValue> instance, int version)
        {
            var count = stream.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                var key   = BinSerializer.Deserialize <TKey>(stream);
                var value = BinSerializer.Deserialize <TValue>(stream);
                instance.Add(key, value);
            }
            return(instance);
        }
Exemplo n.º 6
0
 public static T Deserialize <T>(Stream stream)
 {
     return(BinSerializer <T> .Deserialize(stream));
 }
Exemplo n.º 7
0
 public static void Serialize <T>(Stream stream, T obj)
 {
     BinSerializer <T> .Serialize(stream, obj);
 }