Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 406
Эндрю Троелсен
statiс void Main (string[] args) {
…
// Сохранение объекта List‹›(myCars) в двоичном формате.
list‹JamesBondCar› myCars = new List‹JamesBondCar›();
…
BinaryFormatter binFormat = new BinaryFormatter();
Stream fStream = new FileStream("AllMyCars.dat", FileMode.Create, FileAccess.Write, FileShare.None);
binFormat.Serialize(fStream, myCars);
fStream.Close();
Console.ReadLine();
}
Превосходно! К этому моменту вам должно быть понятно, как использовать сервис сериализации объектов для упрощения процесса сохранения и восстановления данных вашего приложения. Теперь давайте выясним, как использовать пользовательские настройки процесса сериализации.
Исходный код. Проект SimpleSerialize размещен в подкаталоге, соответствующем главе 17.
Настройка процесса сериализации
В большинстве случаев типовая схема сериализации, предлагаемая платформой .NET, будет именно тем, что требуется. Тогда нужно просто применить атрибут [Serializable] и передать объектный граф выбранному средству форматирования. Но в некоторых случаях может потребоваться корректировка того, как обрабатывается объектный граф в процессе сериализации. Например, в соответствии с внутренними правилами вашей компании все поля данных должны сохраняться в формате верхнего регистра или, возможно, вы хотите добавить в поток дополнительные элементы данных, которые не проецируются непосредственно в поля сохраняемого объекта (это могут быть штампы времени, уникальные имена или что-то иное).
Тип | Описание |
---|---|
ISerializable | В .NET 1.1 реализация этого интерфейса была наиболее предпочтительным методом пользовательской сериализации объектов. В .NET 2.0 для настройки параметров процесса сериализации предпочтительнее использовать новое множество атрибутов (они будут описаны чуть позже) |
ObjectIDGenerator | Тип, генерирующий идентификаторы элементов объектного графа |
OnDeserializedAttribute | Атрибут .NET 2.0, позволяющий указать метод, который вызывается сразу же после выполнения реконструкции объекта |
OnDeserializingAttribute | Атрибут .NET 2.0, позволяющий указать метод, который вызывается в процессе выполнения реконструкции объекта |
OnSerializedAttribute | Атрибут .NET 2.0, позволяющий указать метод, который вызывается сразу же после выполнения сериализации объекта |
OnSerializingAttribute | Атрибут .NET 2.0, позволяющий указать метод, который вызывается в процессе сериализации |
OptionalFieldAttribute | Атрибут .NET 2.0, позволяющий указать поле типа, которое может отсутствовать в указанном потоке |
SerializationInfo | По сути, этот класс является "чемоданом свойств", содержащим пары имен и значений, представляющих состояние объекта в процессе сериализации |