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


Практический пример: динамический список с поддержкой сериализации


Прежде чем приводить полный код примера, мы хотим предупредить об одной потенциальной трудности, которая постоянно возникает при восстановлении сохраненных объектов, а особенно объектов, хранящихся в динамических списках. Итак, после завершения восстановления мы получаем набор обобщенных объектов, хранящихся в динамическом массиве. Но как определить истинный тип этих объектов, чтобы выполнить правильное преобразование? В следующем примере эта информация жестко фиксируется в процессе восстановления, поскольку мы точно знаем порядок занесения объектов иерархии Employee в массив. В более общей ситуации эти сведения пришлось бы сохранять в отдельном файле.

В настоящем примере мы создаем менеджера (класс Manager) с именем Sally и секретаря (класс Secretary) с именем Тот. Класс Manager содержит внутренний объект класса Secretary в одной из переменных; класс Secretary содержит ссылку на Manager.

Не забудьте включить в решение ссылку на сборку System.Runtime.Serialization.For-matters.Soap, это необходимо для работы программы.

Ниже приведен код тестовой части программы. Три ключевые строки выделены жирным шрифтом:

Option Strict On

' Использует сборку System.Runtime.Serialization.Formatters.Soap

Imports System.IO

Imports System.Runtime.Serialization

Imports System.Runtime.Serialization.Formatters

Module Modulel

Sub Main()

Dim Sally As New Manager("Sally". 150000)

Dim Tom As Secretary

Tom = New Secretary("Tom". 100000, Sally)

Sally.MySecretary = Tom

Dim Employees As New ArrayList() Employees. Add(Tom)

Employees.Add(Sally)

Console.WriteLine(Tom.TheName & "is employee " & _

Tom.ThelD & "and has salary " & Tom.Salary)

Console.WriteLine("Tom's boss is " & Tom.MyManager.TheName)

Console.WriteLine("Sally's secretary is " & Sally.MySecretary.TheName)

Console. WriteLine() Console.Writel_ine(Sally.TheName & "is employee " & _

Sally.ThelD & "has salary " & Sally.Salary) Sally.RaiseSalary(0.lD)




- Начало -  - Назад -  - Вперед -



Книжный магазин