Universal xml, json and bin serializer/deserializer from and to string
public static class SerializationHelper{ public static string Serialize<T>(this T toSerialize, OutTypeEnum oType) { if(oType == OutTypeEnum.JSON) return SerializeJson<T>(toSerialize); else if(oType == OutTypeEnum.XML) return SerializeXml<T>(toSerialize); else return SerializeBin<T>(toSerialize); } public static T Deserialize<T>(this string toDeserialize, OutTypeEnum oType) { if (oType == OutTypeEnum.JSON) return DeserializeJson<T>(toDeserialize); else if (oType == OutTypeEnum.XML) return DeserializeXml<T>(toDeserialize); else return DeserializeBin<T>(toDeserialize); } public static string SerializeXml<T>(this T toSerialize) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (StringWriter textWriter = new StringWriter()) { xmlSerializer.Serialize(textWriter, toSerialize); return textWriter.ToString(); } } public static T DeserializeXml<T>(this string toDeserialize) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (StringReader textReader = new StringReader(toDeserialize)) { return (T)xmlSerializer.Deserialize(textReader); } } public static string SerializeJson<T>(this T toSerialize) => JsonSerializer.Serialize(toSerialize); public static T DeserializeJson<T>(this string toDeserialize) => (T)JsonSerializer.Deserialize(toDeserialize, typeof(T)); public static string SerializeBin<T>(this T toSerialize) { System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); MemoryStream memStr = new MemoryStream(); try { bf.Serialize(memStr, toSerialize); memStr.Position = 0; return Convert.ToBase64String(memStr.ToArray()); } finally { memStr.Close(); } } public static T DeserializeBin<T>(this string objectToDerialize) { System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); byte[] byteArray = Convert.FromBase64String(objectToDerialize); MemoryStream memStr = new MemoryStream(byteArray); try { return (T)bf.Deserialize(memStr); } finally { memStr.Close(); } }}public enum OutTypeEnum{ JSON, XML, BIN}
usage:
SomeClass obj = new SomeClass();string serializedObject = obj.Serialize(OutTypeEnum.JSON);SomeClass newObj = serializedObject.Deserialize<SomeClass>(OutTypeEnum.JSON);