имеет две перегружаемые версии. Первая получает информацию о типе переопределяемого объекта и объект
XmlAttributes
, который был создан ранее. Вторая версия та, что мы используем, получает также с строковое значение, которое является членом в переопределенном объекте. В нашем случае мы хотим переопределить член
InventoryItems
в классе
Inventory
.
Теперь создадим объект
XmlSerializer
, добавляя объект
XmlAttributeOverrides
в качестве параметра.
XmlSerializer
уже знает, какие типы мы хотим переопределить и что нам нужно вернуть для этих типов. Если выполнить метод
<ProductName>How to Use Your New Product Thing</ProductName>
<SupplierID>10</SupplierID>
<ISBN>123456789</ISBN>
</Book>
</Inventory>
Мы получили тот же самый XML, что и в предыдущем примере. Чтобы десериализовать этот объект и воссоздать объект на основе Inventory, с которого мы начали, необходимо создать
все те же объекты
XmlAttributes
,
XmlElementAttribute
и
XmlAttributeOverrides
, которые создаются при сериализации объекта. Когда это будет сделано, можно прочитать XML и воссоздать объект
Inventory
, как это делалось раньше. Вот код для десериализации объекта
foreach(Product prod, in newInv.InventoryItems) listBox1.items.Add(prod.ProductName);
f.Close;
}
Отметим, что первые несколько строк кода идентичны коду, который использовался для сериализации объекта.
Пространство имен
XmlSerialize
предоставляет мощный набор инструментов. Сериализуя объекты в XML, а не в двоичный формат, мы получаем дополнительные возможности, что может действительно увеличить гибкость проектирования.
Заключение
В этой главе рассматривались широкие возможности пространства имен
System.Xml
платформы .NET. Было показано, как прочитать и записать документы XML с помощью классов на основе
XMLReader
и
XMLWriter
, как в .NET реализована DOM и как использовать возможности DOM. Мы увидели, что XML и ADO.NET действительно очень тесно связаны.
DataSet
и документ XML являются двумя различными представлениями одной и той же базовой архитектуры. Мы сериализовали объекты в XML и смогли вернуть их обратно с помощью вызова пары методов. Комбинация
Reflection
и
XMLSerilization
приводит к некоторым уникальным конструкциям. И, конечно, были рассмотрены
XPath
и
XslTransform
. В течение ближайших нескольких лет XML станет, если уже не стал, важной частью разработки приложений. Платформа .NET сделала доступным мощный набор инструментов для работы с XML.
Глава 14
Операции с файлами и реестром
В этой главе будет рассмотрено выполнение в C# задач, включающих чтение и запись в файлы и в системный реестр. В частности, будут охвачены следующие вопросы:
□ Исследование структуры каталога, выяснение, какие файлы и папки присутствуют и проверка их свойств
□ Перемещение, копирование и удаление файлов и папок