public T ReadStruct <T>(DeserializeHandler <T> handler) where T : class { var element = Activator.CreateInstance <T>(); handler(element, this); return(element); }
public static void Register <T>(SerializeHandler <T> serializer, DeserializeHandler <T> deserializer) { Serializer <T> .serialize = serializer; Deserializer <T> .deserialize = deserializer; _customTypes.Add(typeof(T)); Log.Verbose?.Invoke($"registered {typeof(T)}"); }
public T ReadStruct <T>(DeserializeHandler <T> handler) where T : class { var bound = _reader.ReadInt32(); var element = Activator.CreateInstance <T>(); handler(element, new DataReader(this, _reader.BaseStream.Position + bound)); return(element); }
/// <summary> /// Registers the specified type and handlers. /// If the specified type already exists, the handlers will be replaced by the newer ones. /// HIGHLY recommended to use static methods for the handlers. /// </summary> public static void Register(Type type, SerializeHandler serializer, DeserializeHandler deserializer) { if (!handlers.ContainsKey(type)) { handlers.Add(type, new Info(serializer, deserializer)); } else { handlers[type].Replace(serializer, deserializer); } }
/// <summary> /// Replaces the handlers in this object with the specified handlers. /// If a given handler is null, the replacement process will be ignored. /// </summary> public void Replace(SerializeHandler s, DeserializeHandler d) { if (s != null) { serializer = s; } if (d != null) { deserializer = d; } }
public void ReadList_Struct <T>(List <T> list, DeserializeHandler <T> handler) where T : class { var c = _reader.ReadInt32(); for (int i = 0; i < c; i++) { var element = Activator.CreateInstance <T>(); handler(element, this); list.Add(element); } }
static IList <TObject> DeserializeMany <TObject>(string serialized, DeserializeHandler <TObject> deserializeHandler) { var serialization = serialized.Split('|'); var length = serialization.Length; var objects = new List <TObject>(length); for (int i = 0; i < length; i++) { var ser = serialization[i]; objects.Add(deserializeHandler(ser)); } return(objects); }
public Info(SerializeHandler s, DeserializeHandler d) { serializer = s; deserializer = d; }