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); }