Симон Робинсон - C# для профессионалов. Том II

Тут можно читать онлайн Симон Робинсон - C# для профессионалов. Том II - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Лори, год 2003. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# для профессионалов. Том II
  • Автор:
  • Жанр:
  • Издательство:
    Лори
  • Год:
    2003
  • Город:
    Москва
  • ISBN:
    5-85582-187-0
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Симон Робинсон - C# для профессионалов. Том II краткое содержание

C# для профессионалов. Том II - описание и краткое содержание, автор Симон Робинсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
C# для профессионалов

Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.

В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.

Для кого предназначена эта книга

Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.

Основные темы книги

• Все особенности языка C#

• C# и объектно-ориентированное программирование

• Приложения и службы Windows

• Создание web-страниц и web-служб с помощью ASP NET

• Сборки .NET

• Доступ к данным при помощи ADO NET

• Создание распределённых приложений с помощью NET Remoting

• Интеграция с COM, COM+ и службой Active Directory

C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)

C# для профессионалов. Том II - читать книгу онлайн бесплатно, автор Симон Робинсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Сериализация объектов в XML

Сериализация является процессом сохранения объекта на диске. Другая часть приложения или даже другое приложение могут десериализовать объект и он будет в том же состоянии, в каком он был до сериализации. Платформа .NET содержит два способа выполнения сериализации. Рассмотрим пространство имен System.Xml.Serialization.

Как показывает имя, сериализация производится в формате XML. Это делается преобразованием открытых свойств объекта и открытых полей в элементы и/или атрибуты. Сериализатор XML не может преобразовать скрытые данные, а только открытые. Представляйте это как способ сохранения состояния объекта. Если необходимо сохранить скрытые данные, то используйте BinaryFormatterв пространстве имен System.Runtime.Serialization.Formatters.Binary. Можно также:

□ Определить, должны ли данные быть атрибутом или элементом.

□ Определить пространство имен.

□ Изменить имя атрибута или элемента.

Вместе с возможностью сериализовать только открытые данные, невозможно сериализовать графы объектов (объекты, которые достижимы из сериализуемого объекта). Это не является серьезным ограничением. При тщательном проектировании классов этого легко можно избежать. Если необходимо иметь возможность сериализовать открытые и скрытые данные, а также граф объектов, содержащий множество вложенных объектов, то можно будет воспользоваться пространством имен System.Runtime.Serialization.Formatters.Binary.

Данные для сериализации могут быть примитивными типами данных, полями, массивами и XML, встроенным в форму объектов XmlElementи XmlAttribute. Связью между объектом и документом XML являются специальные атрибуты, которые аннотируют классы. Эти атрибуты используются для того, чтобы информировать сериализатор, как записать данные.

На платформе .NET существует инструмент, помогающий создавать атрибуты,— это утилита xsd.exe, которая может делать следующее:

□ Генерировать схему XML из файла схемы XDR

□ Генерировать схему XML из файла XML

□ Генерировать классы DataSetиз файла схемы XSD

□ Генерировать классы времени выполнения, которые имеют специальные атрибуты для XmlSerilization

□ Генерировать XSD из классов, которые уже были разработаны

□ Ограничивать список элементов, которые создаются в коде

□ Определять, на каком языке программирования должен быть представлен генерируемый код (C#, VB.NET, или JScript.NET)

□ Создавать схемы из типов в компилированных сборках

В документации платформы можно найти подробное описание параметров командной строки.

Несмотря на предлагаемые возможности, вовсе не обязательно использовать xsd.exe, чтобы создать классы для сериализации. Рассмотрим простое приложение, которое сериализует класс, считывающий данные о продуктах, сохраненных ранее в этой главе (пример находится в папке SerialSample1). В начале идет очень простой код, который создает новый объект Product, pd, и записывает некоторые данные:

private void button1_Click(object sender, System.EventArgs e) {

// новый объект Products

Products pd=new Products();

// задать некоторые свойства

pd.ProductXD=200;

pd.CategoryID=100;

pd.Discontinued=false;

pd.ProductName="Serialize Objects";

pd.QuantityPerUnit="6";

pd.ReorderLevel=1;

pd.SupplierID=1;

pd.UnitPrice=1000;

pd.UnitsInStock=10;

pd.UnitsOnOrder=0;

Метод Serializeкласса XmlSerializerимеет шесть перегружаемых версий. Одним из требуемых параметров является поток для записи в него данных. Это может быть Stream, TextWriterили XmlWriter. В данном случае мы создали объект trна основе TextWriter. Затем необходимо создать объект srна основе XmlSerializer. XmlSerializerдолжен знать информацию о типе сериализуемого объекта, поэтому используется ключевое слово typeofс указанием типа, который должен быть сериализован. После создания объекта srвызывается метод Serialize, в который передается tr(объект на основе Stream) и объект, который необходимо сериализовать, в данном случае pd. Не забудьте закрыть поток, когда закончите с ним работу.

//новый TextWriter и XmlSerializer

TextWriter tr=new StreamWriter("..\\..\\..\\serialprod.xml");

XmlSerializer sr=new XmlSerializer(typeof(Products));

// сериализуем объект

sr.Serialize(tr,pd);

tr.Close();

}

Здесь мы добавляем событие другой кнопки для создания нового объекта newPdна основе Products. В этот раз мы будем использовать объект FileStreamдля чтения XML:

private void button2_Click(object sender, System.EventArgs e) {

// создаем ссылку на тип Products Products newPd;

// новый файловый поток для открытия сериализованного объекта

FileStream f=new FileStream("..\\..\\..\\serialprod.xml", FileMode.Open);

Здесь создается новый объект XmlSerializer, таким образом передается информация о типе Product. Затем можно вызвать метод Deserialize. Отметим, что нам по-прежнему необходимо делать явное преобразование типа, когда создается объект newPd. В этом месте newPd имеет такое же состояние, как и pd:

// новый Serializer

XmlSerializer newSr=new XmlSerializer(typeof(Products));

// десериализация объекта

newPd=(Products)newSr.Deserialize(f);

// загружаем его в окно списка.

listBox1.Items.Add(newPd.ProductName);

f.Closed();

}

Теперь мы проверим класс Products. Единственное различие между ним и любым другим классом, который можно записать, состоит в добавленных атрибутах. Не путайте эти атрибуты с атрибутами в документе XML. Эти атрибуты расширяют класс SystemAttribute. Атрибут является некоторой декларативной информацией, которая может извлекаться во время выполнения с помощью CLR (см. в главе 6 более подробно). В данном случае добавляются атрибуты, которые описывают, как объект должен быть сериализован:

//класс, который будет сериализован,

//атрибуты определяют, как объект сериализуется.

[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]

public class Products {

[System.Xml.Serialization.XmlElementAttribute(IsNullable=false)]

public int ProductID;

[System.Xml.Serialization.XmlElementAttribute(IsNullable=false)]

public string ProductName;

[System.Xml.Serialization.XmlElementAttribute()]

public int SupplierID;

[System.Xml.Serialization.XmlElementAttribute()]

public int CategoryID;

[System.Xml.Serialization.XmlElementAttribute()]

public string QuantityPerUnit;

[System.Xml.Serialization.XmlElementAttribute()]

public System.Decimal UnitPrice;

[System.Xml.Serialization.XmlElementAttribute()]

public short UnitsInStock;

[System.Xml.Serialization.XmlElementAttribute()]

public short UnitsOnOrder;

[System.Xml.Serialization.XmlElementAttribute()]

public short ReorderLevel;

[System.Xml.Serialization.XmlElementAttribute()]

public bool Discontinued;

}

Созданный документ XML выглядит, как любой другой документ XML, который мы могли бы создать.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Симон Робинсон читать все книги автора по порядку

Симон Робинсон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# для профессионалов. Том II отзывы


Отзывы читателей о книге C# для профессионалов. Том II, автор: Симон Робинсон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x