Симон Робинсон - 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 - читать книгу онлайн бесплатно, автор Симон Робинсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

// необходимо иметь запись атрибута для каждого типа данных

[XmlArrayItem("Prod", typeof(Product)), XmlArrayItem("Book", typeof(BookProduct))]

//public Inventory(Product [] InventoryItems) {

// stuff=InventoryItems;

//}

public Product[] InventoryItems {

get {return stuff;}

set {stuff=value;}

}

}

//класс Product

public class Product {

private int prodId;

private string prodName;

private int suppId;

public Product() {}

public int ProductID {

get {return prodId;}

set {prodId=value;}

}

public string ProductName {

get {return prodName;}

set {prodName=value;}

}

public int SupplierID {

get {return suppId;}

set {suppId=value;}

}

}

// Класс Bookproduct

public class BookProduct: Product {

private string isbnNum;

public BookProduct() {}

public string ISBN {

get {return isbnNum;}

set {isbnNum=value;}

}

}

В этот пример добавлено два новых класса. Класс Inventoryбудет отслеживать то, что добавляется на склад. Можно добавлять продукцию на основе класса Productили класса BookProduct, который расширяет Product. В классе Inventoryсодержится массив добавленных объектов и в нем могут находиться как BookProducts, так и Products. Вот как выглядит документ XML:

100

Product Thing

10

101

How to Use Your New Product Thing

10

123456789

Все это работает прекрасно, но как быть в ситуации, когда нет доступа к исходному коду типов, которые будут сериализироваться? Невозможно добавить атрибут, если отсутствует исходный код. Существует другой способ. Можно воспользоваться классами XmlAttributesи XmlAtrtributeOverrides. Вместе эти классы позволят выполнить в точности то, что только что было сделано, но без добавления атрибутов. Вот пример, находящийся в папке SerialSample4:

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

// создать объект XmlAttributes XmlAttributes attrs=new XmlAttributes();

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

attrs.XmlElements.Add(new XmlElementAttribute("Book", typeof(BookProduct)));

attrs.XmlElements.Add(new XmlElementAttribute("Product", typeof(Product)));

XmlAttributeOverrides attrOver=new XmlAttributeOverrides();

//добавить к коллекций атрибутов

attrOver.Add(typeof(Inventory), "InventoryItems", attrs);

// создать объекты Product и Book

Product newProd=new Product();

BookProduct newBook=new BookProduct();

newProd.ProductID=100;

newProd.ProductName="Product Thing";

newProd.SupplierID=10;

newBook.ProductID=101;

newBook.ProductName="How to Use Your New Product Thing";

newBook.SupplierID=10;

newBook.ISBN="123456789";

Product[] addProd={newProd, newBook};

//Product[] addProd={newBook};

Inventory inv=new Inventory();

inv.InventoryItems=addProd;

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

XmlSerializer sr=new XmlSerializer(typeof(Inventory), attrOver);

sr.Serialize(tr, inv);

tr.Close();

}

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

//необходимо выполнить тот же процесс для десериализации

// создаем новую коллекцию XmlAttributes

XmlAttributes attrs=new XmlAttributes();

// добавляем информацию о типе к коллекции элементов

attrs.XmlElements.Add(new XmlElementAttribute("Book", typeof(BookProduct)));

attrs.XmlElements.Add(new XmlElementAttribute("Product", typeof(Product)));

XmlAttributeOverrides attrOver=new XmlAttributeOverrides();

//добавляем к коллекции Attributes (атрибутов)

attrOver.Add(typeof(Inventory), "InventoryItems", attrs);

//нужен новый объект Inventory для десериализаций в него

Inventory newInv;

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

// десериализованного объекта

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

XmlSerializer newSr=new XmlSerializer(typeof(Inventory).attrOver);

newInv=(Inventory)newSr.Deserialize(f);

if (newInv!=null) {

foreach(Product prod in newInv.InventoryItems) listBox1.Items.Add(prod.ProductName);

}

f.Close();

}

// это те же классы, что и в предыдущем примере

// за исключением удаленных атрибутов

// из свойства InventoryItems для Inventory

public class Inventory {

private Product[] stuff;

public Inventory() {}

public Product[] InventoryItems {

get {return stuff;}

set {stuff=value;}

}

}

public class Product {

private int prodId;

private string prodName;

private int suppId;

public Product() {}

public int ProductID {

get {return prodId;}

set {prodId=value;}

}

public string ProductName {

get {return prodName;}

set {prodName=value;}

}

public int SupplierID {

get {return suppId;}

set {suppId=value;}

}

}

public class BookProduct:Product {

private string isbnNum;

public BookProduct() {}

public string ISBN {

get {return isbnNum;}

set {isbnNum=value;}

}

}

Это тот же пример, что и раньше, но первое, что необходимо заметить,— здесь нет добавленных в класс Inventoryатрибутов. Поэтому в данном случае представьте, что классы Inventory, Productи производный класс BookProductнаходятся в отдельной DLL, и у нас нет исходного кода.

Первым шагом в процессе является создание объекта на основе XmlAttributes, и объекта XmlElementAttributeдля каждого типа данных, который будет переопределяться:

XmlAttributes attrs=new XmlAttributes();

attrs.XmlElements.Add(new XmlElementAttribute("Book", typeof(BookProduct)));

attrs.XmlElements.Add(new XmlElementAttribute("Product", typeof(Product)));

Здесь мы добавляем новый XmlElementAttributeк коллекции XmlElementsкласса XmlAttributes. Класс XmlAttributesимеет свойства, соответствующие атрибутам, которые могут применяться; XmlArrayи XmlArrayItems, которые мы видели в предыдущем примере, являются только парой. Теперь мы имеем объект XmlAttributesс двумя объектами на основе XmlElementAttribute, добавленными к коллекции XmlElements. Далее создадим объект XmlAttributeOverrides:

XmlAttributeOverrides attrOver = new XmlAttributeOverride();

attrOver.Add(typeof(Inventory) , "Inventory Items", attrs);

Meтод Addимеет две перегружаемые версии. Первая получает информацию о типе переопределяемого объекта и объект XmlAttributes, который был создан ранее. Вторая версия та, что мы используем, получает также с строковое значение, которое является членом в переопределенном объекте. В нашем случае мы хотим переопределить член InventoryItemsв классе Inventory.

Теперь создадим объект XmlSerializer, добавляя объект XmlAttributeOverridesв качестве параметра. XmlSerializerуже знает, какие типы мы хотим переопределить и что нам нужно вернуть для этих типов. Если выполнить метод Serialize, то получится следующий вывод XML:

100

Product Thing

10

101

How to Use Your New Product Thing

10

123456789

Мы получили тот же самый XML, что и в предыдущем примере. Чтобы десериализовать этот объект и воссоздать объект на основе Inventory, с которого мы начали, необходимо создать все те же объекты XmlAttributes, XmlElementAttributeи XmlAttributeOverrides, которые создаются при сериализации объекта. Когда это будет сделано, можно прочитать XML и воссоздать объект Inventory, как это делалось раньше. Вот код для десериализации объекта Inventory:

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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