Программирование >>  Обработка исключительных ситуаций 

1 ... 86 87 88 [ 89 ] 90 91 92 ... 142


f.CloseO;

Результат работы программы: Monster Вася health = 100 ammo = 80

Monster Петя health = 120 imno = 50

Как видите, при сериализации сохраняется все дерево объектов. Обратите внимание на то, что значение поля у не было сохранено, поскольку оно было помечено как несохраняемое.

ПРИМЕЧАНИЕ-

Сериализация в формате SOAP выполняется аналогично с помощью класса SoapFormatter. Программист может задать собственный формат сериализации, для этого ему придется реализовать в своих классах интерфейс ISeri al i zabl e и специальный вид конструктора класса.

Рекомендации по программированию

Большинство программ тем или иным образом работают с внешними устройствами, в качестве которых могут выступать, например, консоль, файл на диске или сетевое соединение. Взаимодействие с внешними устройствами организуется с помощью потоков, которые поддерживаются множеством классов библиотеки .NET.

Листинг 11.12. Десериапизация объекта

using System; using System.10;

using System.Runtime.Serialization.Formatters.Binary; namespace Consol eAppl icationi

class Classl

static void MainO

FileStream f = new FileStream( Demo.bin , FileMode.Open ); BinaryFormatter bf = new BinaryFormatterO;

Demo d = (Demo) bf.DeserializeC f ); восстановление объекта

d.X. PassportO; d.Y. Passport О ;

Console.WriteLineC d.a ); Console.WriteLineC d.b );



Рекомендации по программированию 271

Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производится обмен. Классы библиотеки позволяют работать с потоками в различных режимах и на различных уровнях: на уровне двоичного представления данных, байтов и текста. Двоичные и байтовые потоки хранят данные во внутреннем представлении, текстовые - в кодировке Unicode.

Поток можно открыть в синхронном или асинхронном режиме для чтения, записи или добавления. Доступ к файлам может быть последовательным и произвольным. Текстовые файлы позволяют выполнять только последовательный доступ, в двоичных и байтовых потоках можно использовать оба метода. Прямой доступ в сочетании с отсутствием преобразований обеспечивает высокую скорость обмена.

Методы форматированного ввода для значений арифметических типов в С# не поддерживаются. Для преобразования из символьного в числовое представление используются методы класса Convert или метод Parse. Форматированный вывод выполняется с помощью перегруженного метода ToString, результат выполнения которого передается в методы текстовых файлов.

Рекомендуется всегда проверять успешность открытия существующего файла, перехватывать исключения, возникающие при преобразовании значений арифметических типов, и явным образом закрывать файл, в который выполнялась запись. Длительные операции с файлами более эффективно выполнять в асинхронном режиме.

Для сохранения объектов (сериализации) используется атрибут [Serializable]. Объекты можно сохранять в одном из двух форматов: двоичном или SOAP (в виде XML-файла).



Глава 12

Сборки, библиотеки, атрибуты, директивы

Все наши пред1дущие приложения состояли из одного физического файла. Для больших проектов это неудобно и чаще всего невозможно, да и в других случаях бывает удобнее поместить связанные между собой типы в библиотеку и использовать их по мере необходимости. В этой главе мы рассмотрим вопросы создания и использования библиотек, способы получения и подготовки информации о типах, пространства имен и препроцессор. Эти сведения необходимы для успешной разработки реальных программ.

Сборки

В результате компиляции в среде .NET создается сборка - файл с расширением ехе или dll, который содержит код на промежуточном языке, метаданные типов, манифест и ресурсы (рис. 12.1). Понятие сборки было введено в главе 1 (см. с. 9), а сейчас мы рассмотрим ее составные части более подробно.

Манифест Метаданные Код на языке IL Ресурсы (не обязательно) Рис. 12.1. Сборка, состоящая из одного файла



1 ... 86 87 88 [ 89 ] 90 91 92 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика