/// <summary>Funzione per la serializzazione di oggetti.</summary> /// <param name="objList">L'oggetto da serializzare.</param> /// <param name="serializzationType">Il tipo di serializzazione che si vuole ottenere.</param> /// <param name="compressionType">[Optional: default=nothing] Il tipo di compressione da impiegare.</param> /// <returns>string</returns> public static string SerializeObject(Object obj, SerializationType serializationType, CompressionType compressionType = CompressionType.NOTHING) { string data = ""; // serializzo BINARY if (serializationType == SerializationType.BINARY) { MemoryStream memStream = new MemoryStream(); IFormatter binFormatter = new BinaryFormatter(); binFormatter.Serialize(memStream, obj); byte[] buffer = memStream.ToArray(); data = Convert.ToBase64String(buffer); // serializzo XML } else if (serializationType == SerializationType.XML) { MemoryStream memStream = new MemoryStream(); XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType()); xmlSerializer.Serialize(memStream, obj); byte[] buffer = memStream.ToArray(); data = Encoding.UTF8.GetString(buffer); // serializzo JSON } else if (serializationType == SerializationType.JSON) { data = JsonWriter.Serialize(obj); // eccezione: tipo serializzazione non specificato } else { throw new Exception("Tipo di serializzazione sconosciuto."); } // comprimo la serializzazione se richiesto data = Compressor.Compress(data, compressionType); return(data); }
/// <summary>Funzione per la deserializzazione di oggetti.</summary> /// <param name="data">La stringa contenente l'oggetto serializzato.</param> /// <param name="serializzationType">Il tipo di serializzazione usato.</param> /// <param name="compressionType">[Optional: default=nothing] Il tipo di compressione usato.</param> /// <returns>dynamic</returns> public static dynamic UnserializeObject(string data, Type objType, SerializationType serializationType, CompressionType compressionType = CompressionType.NOTHING) { dynamic obj = null; // decomprimo la serializzazione se richiesto data = Compressor.Decompress(data, compressionType); // deserializzo da BINARY if (serializationType == SerializationType.BINARY) { IFormatter binFormatter = new BinaryFormatter(); byte[] buffer = Convert.FromBase64String(data); MemoryStream memStream = new MemoryStream(buffer); obj = binFormatter.Deserialize(memStream); // deserializzo da XML } else if (serializationType == SerializationType.XML) { XmlSerializer xmlSerializer = new XmlSerializer(objType); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(data); MemoryStream memStream = new MemoryStream(buffer); obj = xmlSerializer.Deserialize(memStream); // deserializzo da JSON } else if (serializationType == SerializationType.JSON) { obj = JsonReader.Deserialize(data, objType); // eccezione: tipo serializzazione non specificato } else { throw new Exception("Tipo di serializzazione sconosciuto."); } return(obj); }