Иллюстрированный самоучитель по Visual Basic .NET

Простая сериализация. Простое восстановление. Применение сериализации при клонировании объектов.

Прежде всего импортируйте пространство имен System.Runtime.Serialization, это сэкономит немало времени на вводе имен. В типичной ситуации поддержка сериализации включается простым добавлением атрибута в заголовок класса:

<Serializable()>Public Class Employee

Атрибут <Serial izable()> должен быть установлен и во всех классах, производных от вашего класса, а также во всех вложенных классах, объекты которых содержатся в исходном классе. В противном случае рекурсивный процесс будет нарушен с исключением System.Runtime.Serialization.SerializationException.

Примечание
В .NET Framework сериализация поддерживается в классах, реализующих интерфейс ISerializable
.

После пометки класса атрибутом <Serial izableC)> следует решить, в каком формате должен сохраняться объект – в XML-формате SOAP или в более компактном двоичном формате. Используемый по умолчанию двоичный формат доступен всегда. Чтобы воспользоваться форматом SOAP, необходимо добавить ссылку на сборку System.Runtime.Senalization.Formatters.Soap.

Следующий пример показывает, как организовать сериализацию для массива. Массив ArrayList является объектом и может содержать другие объекты (в нашем примере это объекты иерархии Employee). Поскольку динамические массивы сериализуются автоматически, остается лишь пометить атрибутом <Serializablе()> различные классы иерархии Employee. Вся содержательная работа выполняется в двух выделенных строках:

Sub SerializeToBinary(ByVal myEmployees As ArrayList._
ByVal fName As String)
Dim fStream As FileStream
Dim myBinaryFormatter As New Formatters.Binary.BinaryFormatter()
Try
fStream = New FileStreamtfName,FileMode.Create, FileAccess.Write)
myBinaryFormatter.Serialize(fStream, myEmployees)
Catch e As Exception
Throw e Finally
If Not (fStream Is Nothing) Then fStream.Close()
End Try
End Sub

Чтобы вместо двоичного формата массив сохранялся в формате SOAP, достаточно включить в проект ссылку на сборку System.Runtime.Serialization.Formatters.Soap (это делается в диалоговом окне Project › References) и привести выделенные строки к следующему виду:

Dim mySoapFormatter As New Formatters.Soap.SoapFormatter()

И:

mySoapFormatter.Serialize(fStream .myEmployees)
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.