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); }
public static void WriteList <T>(Stream stream, List <T> value) { stream.Write(value.Count); foreach (var current in value) { BinSerializer.Serialize(stream, current); } }
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); } }
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); }
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); }
public static T Deserialize <T>(Stream stream) { return(BinSerializer <T> .Deserialize(stream)); }
public static void Serialize <T>(Stream stream, T obj) { BinSerializer <T> .Serialize(stream, obj); }