示例#1
0
        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);
        }