The following utility class will help you with unit testing serialization for your data contracts and serialization using a standard IFormatter:
internal static class SerializationHelper
{
public static string SerializeDataContract<T>(T testObject) where T: class
{
string fileName = Path.GetTempFileName();
using (FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate))
{
DataContractSerializer serializer =
new DataContractSerializer(typeof(T));
serializer.WriteObject(stream, testObject);
}
return fileName;
}
public static string SerializeObject<TObject, TFormatter>(TObject testObject)
where TObject : class
where TFormatter : IFormatter
{
string fileName = Path.GetTempFileName();
using (FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate))
{
IFormatter serializer = Activator.CreateInstance<TFormatter>();
serializer.Serialize(stream, testObject);
}
return fileName;
}
public static T DeserializeDataContract<T>(string fileName) where T : class
{
using (FileStream stream = new FileStream(fileName, FileMode.Open))
{
DataContractSerializer serializer =
new DataContractSerializer(typeof(T));
return (serializer.ReadObject(stream) as T);
}
}
public static TObject DeserializeObject<TObject, TFormatter>(string fileName)
where TObject : class
where TFormatter : IFormatter
{
using (FileStream stream = new FileStream(fileName, FileMode.Open))
{
IFormatter serializer = Activator.CreateInstance<TFormatter>();
return (serializer.Deserialize(stream) as TObject);
}
}
}