Сериализация объектов с помощью BinaryFormatter
Сериализация объектов с помощью BinaryFormatter
Чтобы показать, как сохранить экземпляр JamesBondCar в физическом файле, давайте используем тип BinaryFormatter. Подчеркнем снова, что двумя ключевыми методами типа BinaryFormatter являются Serialize() и Deserialize().
• Serialize(). Сохраняет объектный граф в указанном потоке в виде последовательности байтов.
• Deserialize(). Преобразует сохраненную последовательность байтов в объектный граф.
Предположим, что мы создали экземпляр JamesBondCar, изменили в нем некоторые данные и хотим сохранить этот "шпиономобиль" в файле *.dat. Первой нашей задачей является создание самого файла *.dat. Это можно сделать с помощью создания экземпляра типа System.IO.FileStream (см. главу 16). Создайте экземпляр BinaryFormatter и передайте ему FileStream и объектный граф для сохранения.
using System.Runtime.Serialization.Formatters.Binary; using System.IO;
…
static void Main (string[] args) {
Console.WriteLine("*** Забавы с сериализацией объектов *** ");
// Создание JamesBondCar и установка данных состояния.
JamesBondCar jbc = new JamesBondCar();
jbc.canFly = true;
jbc.canSubmerge = false;
jbc.theRadio.statio.nPresets = new double[]{89.3, 105.1, 97.1};
jbc.theRadio.hasTweeters = true;
// Сохранение объекта в файл CarData.dat в двоичном формате.
BinaryFormatter binFormat = new BinaryFormatter();
Stream fStream = new FileStream("CarData.dat", FileMode.Create, FileAccess.Write, FileShare.None);
binFormat.Serialize(fStream, jbc);
fStream.Close();
Console.ReadLine();
}
Как видите, метод BinaryFormatter.Serialize() отвечает за компоновку объектного графа и передачу соответствующей последовательности байтов некоторому типу, производному от Stream. В данном случае таким потоком является физический файл. Однако можно выполнять сериализацию объектных типов в любой производный от Stream тип, например в память, поскольку MemoryStream тоже является потомком типа Stream.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 10 Разработка СОМ-объектов с помощью языков сценариев
Глава 10 Разработка СОМ-объектов с помощью языков сценариев Во всех сценариях WSH, которые мы рассматривали ранее, создавались экземпляры внешних СОМ-объектов, являющихся серверами автоматизации, после чего мы не задумываясь использовали свойства и методы этих объектов.
Манипулирование данными с помощью объектов
Манипулирование данными с помощью объектов После создания таблиц можно приступить к манипуляциям с данными: вводить данные в таблицы, извлекать их из таблиц, проверять и изменять структуру таблиц. Для манипулирования структурой таблиц используются команды определения
Управление наборами данных с помощью объектов Collection
Управление наборами данных с помощью объектов Collection Если нужно работать с наборами элементов информации, создайте для этой информации объект Collection (Коллекция). Как уже говорилось в главе 12, в VBA родовой класс Collection предназначен для хранения практически всего, что только
Выделение объектов с помощью фильтров
Выделение объектов с помощью фильтров Одним из способов выделения является применение фильтров. Используя команду filter или кнопку Quick Select (Быстрый выбор) из группы Utilities (Утилиты) на вкладке Home (Основная) ленты, вы можете отфильтровать наборы выделения по свойствам
Извлечение данных из объектов с помощью специального мастера
Извлечение данных из объектов с помощью специального мастера Рассмотрим порядок работы с мастером извлечения данных.1. Запустите команду вставки таблицы (допустим, что документ содержит некоторые объекты, атрибуты которых вы хотели бы внести в эту таблицу (рис. 4.54)).
10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore
10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore Библиотека PStore реализует хранение объектов Ruby в файле. Объект класса PStore может содержать несколько иерархий объектов Ruby. У каждой иерархии есть корень, идентифицируемый ключом. Иерархии считываются с диска
ГЛАВА 17. Сериализация объектов
ГЛАВА 17. Сериализация объектов Из главы 16 вы узнали о функциональных возможностях, предоставленных пространством имея System.IO. Было показано, что это пространство имен содержит множество типов ввода-вывода, которые могут использоваться для чтения и сохранения данные в
Реконструкция объектов с помощью BinaryFormatter
Реконструкция объектов с помощью BinaryFormatter Теперь предположим, что вы хотите прочитать сохранённые данные JamesBondCar из двоичного файла назад в объектную переменную. Программно открыв CarData.dat (с помощью метода OpenRead()), вызовите метод Deserialize() объекта BinaryFormatter. Метод Deserialize()
Сериализация объектов с помощью SoapFormatter
Сериализация объектов с помощью SoapFormatter Следующим вариантом является тип SoapFormatter. Тип SoapFormatter сохраняет объектный граф в сообщении SOAP (Simple Object Access Protocol – простой протокол доступа к объектам), что делает этот вариант форматирования прекрасным выбором при передаче
Сериализация объектов с помощью XmlSerializer
Сериализация объектов с помощью XmlSerializer Вдобавок к SOAP и двоичному формату, компоновочный блок System.Xml.dll предлагает третий формат, обеспечиваемый типом System.Xml.Serialization. XmlSerializer который может использоваться для сохранения состояния данного объекта в виде "чистого" XML в
Хостинг удаленных объектов с помощью сервиса Windows
Хостинг удаленных объектов с помощью сервиса Windows Возможно, идеальным хостом для удаленных объектов является сервис Windows, поскольку сервис Windows позволяет следующее.• Может загружаться автоматически при запуске системы• Может запускаться, как "невидимый" процесс в
Хостинг удаленных объектов с помощью IIS
Хостинг удаленных объектов с помощью IIS Хостинг удаленного компоновочного блока с помощью сервера IIS (Internet Information Server – информационный сервер Интернет) даже проще, чем создание сервиса Windows, поскольку сервер IIS специально запрограммирован на то, чтобы получать
Получение множества наборов результатов с помощью объектов чтения данных
Получение множества наборов результатов с помощью объектов чтения данных Объекты чтения данных могут получать от одного объекта команды множество наборов результатов. Например, чтобы получить все строки таблицы Inventory и все строки таблицы Customers, можно указать оба
Изменение содержимого таблиц с помощью объектов команд
Изменение содержимого таблиц с помощью объектов команд Вы только что убедились, что метод ExecuteReader() извлекает объект чтения данных, позволяющий проверить результаты выполнения SQL-оператора Select в однонаправленном и доступном только для чтения потоке. Но если вы хотите
Выделение объектов с помощью фильтров
Выделение объектов с помощью фильтров Одним из способов выделения является применение фильтров. Используя команду FILTER или команду Quick Select (Быстрый выбор) из меню кнопки Utilities (Утилиты) на вкладке Home (Основная) ленты, вы можете отфильтровать наборы выделения по свойствам
Извлечение данных из объектов рисунка с помощью специального мастера
Извлечение данных из объектов рисунка с помощью специального мастера Рассмотрим порядок работы с мастером извлечения данных.1. Запустите команду вставки таблицы в рисунок (допустим, что рисунок содержит некоторые объекты, атрибуты которых вы хотели бы внести в эту