Простая сериализация. Простое восстановление. Применение сериализации при клонировании объектов.
Прежде всего импортируйте пространство имен 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)