private static void BinarySerializationDemo()
{
Header("Бинарная сериализация");
TrainBinary train = new TrainBinary(190.2, 8, "Иванов И.И.", "Петров П.П.", "Сидоров С.С.");
Comment("Объект до сериализации");
train.Print();
Console.WriteLine();
// Будем работать с файлом в папке для временных файлов
string tempFileName = Path.Combine(Path.GetTempPath(), "train.dat");
BinaryFormatter bf = new BinaryFormatter();
// Выполняем сериализацию
using (FileStream fs = File.Open(tempFileName, FileMode.Create))
{
bf.Serialize(fs, train);
}
Console.WriteLine();
// Печатаем результат на экран
Comment("Результат бинарной сериализации");
using (FileStream fileStream = File.OpenRead(tempFileName))
{
PrintToConsole(fileStream);
Console.WriteLine();
}
// Выполняем десериализацию
using (FileStream fs = File.Open(tempFileName, FileMode.Open))
{
TrainBinary trainCopy = (TrainBinary)bf.Deserialize(fs);
Comment("Копия объекта после сериализации.");
trainCopy.Print();
Console.WriteLine("\r\nReferenceEquals(train, trainCopy)={0}", ReferenceEquals(train, trainCopy));
}
Pause();
// Удаляем ненужный временный файл. В настоящем приложении файл может еще понадобиться.
File.Delete(tempFileName);
}