public static Stream Serialize(T obj) { MemoryStream memoryStream = new MemoryStream(); StreamWriter streamWriter = new StreamWriter(memoryStream); var fields = typeof(T).GetFields(); foreach (var field in fields) { if (field.IsDefined(typeof(SerializeField), true)) { SerializeField serializeField = field.GetCustomAttributes(typeof(SerializeField), true)[0] as SerializeField; streamWriter.WriteLine(field.Name); streamWriter.WriteLine(serializeField.Serialize(field.GetValue(obj))); } } streamWriter.Flush(); memoryStream.Position = 0; return(memoryStream); }
public static void Deserialzie(T obj, Stream stream) { StreamReader streamReader = new StreamReader(stream); while (!streamReader.EndOfStream) { string name = streamReader.ReadLine(); string value = streamReader.ReadLine(); FieldInfo field = typeof(T).GetField(name); if (field != null) { if (field.IsDefined(typeof(SerializeField), true)) { SerializeField serializeField = field.GetCustomAttributes(typeof(SerializeField), true)[0] as SerializeField; field.SetValue(obj, serializeField.Deserialize(value, field.FieldType)); } } } }