Nelle mie applicazioni mi capita spesso di serializzare gli oggetti in formato binario per salvarli su disco, per inviarli sulla rete, ecc... Mi sono così definito una semplice classe helper per velocizzare questo procedimento:
using System;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace SerializationHelper
{
public static class Serializator
{
public static void Serialize(object obj, Stream serializationStream)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(serializationStream, obj);
}
catch (SerializationException ex)
{
throw new SerializationException(ex.Message + Environment.NewLine +
"To make a class serializable, add the 'Serializable' attribute before the declaration of the class.",
ex.InnerException);
}
}
public static void Serialize(object obj, string path)
{
using(Stream fileStream = File.Open(path, FileMode.Create))
Serialize(obj, fileStream);
}
public static object Deserialize(Stream serializationStream)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
return formatter.Deserialize(serializationStream);
}
catch (SerializationException ex)
{
throw new SerializationException(ex.Message + Environment.NewLine +
"To make a class serializable, add the 'Serializable' attribute before the declaration of the class.",
ex.InnerException);
}
}
public static object Deserialize(string path)
{
using(Stream fileStream = File.Open(path, FileMode.Open))
return Deserialize(fileStream);
}
}
}
Non è niente di eccezionale, ma avere questo codice sempre a disposizione quando serve è molto comodo .