Чтение онлайн

на главную - закладки

Жанры

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

Ватсон Карли

Шрифт:

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

 //загрузить его в окно списка.

 listBox1.Items.Add(newPd.ProductName);

 f.Close;

}

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

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

[System.Xml.Serialization.XmlRootAttribute]

public class Products {

 private int prodId;

 private string prodName;

 private int suppId;

 private int catId;

 private string qtyPerUnit;

 private Decimal unitPrice;

 private short unitsInStock;

 private short unitsOnOrder;

 private short reorderLvl;

 private bool discont;

 private int disc;

 //
добавлен атрибут Discount

 [XmlAttributeAttribute(AttributeName="Discount")]

 public int Discount {

get {return disc;}

set {disc=value;}

 }

 [XmlElementAttribute]

 public int ProductID {

get {return prodId;}

set {prodId=value;}

 }

 [XmlElementAttribute]

 public string ProductName {

get {return prodName;}

set {prodName=value;}

 }

 [XmlElementAttribute]

 public int SupplierID {

get {return suppId;}

set {suppId=value;}

 }

 [XmlElementAttribute]

 public int CategoryID {

get {return catId;}

set {catId=value;}

 }

 [XmlElementAttribute]

 public string QuantityPerUnit {

get {return qtyPerUnit;}

set {qtyPerUnit=value;}

 }

 [XmlElementAttribute]

 public Decimal UnitPrice {

get {return UnitPrice;}

set {unitPrice=value;}

 }

 [XmlElementAttribute]

 public short UnitsInStock {

get {return unitsInStock;}

set {unitsInStock=value;}

 }

 [XmlElementAttribute]

 public short UnitsOnOrder {

get {return unitsOrOrder;}

set {unitsOnOrder=value;}

 }

 [XmlElementAttribute]

 public short ReorderLevel {

get {return reorderLvl;}

set {reorderLvl=value;}

 }

 [XmlElementAttribute]

 public pool Discontinued {

get {return discont;}

set {discont=value;}

 }

}

Выполнение

этого кода вместо класса
Products
в предыдущем примере даст те же самые результаты с одним исключением. Мы добавили атрибут
Discount
, тем самым показав, что атрибуты также могут быть сериализуемыми. Вывод выглядит следующим образом (
serialprod1.xml
):

<?xml version="1.0" encoding="utf-8"?>

<Products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Discount="2">

 <ProductID>200</ProductID>

 <ProductName>Serialize Objects</ProductName>

 <SupplierID>1</SupplierID>

 <CategoryID>100</CategoryID>

 <QuantityPerUnit>6</QuantityPerUnit>

 <UnitPrice>1000</UnitPrice>

 <UnitsInStock>10</UnitsInStock>

 <UnitsOnOrder>0</UnitsOnOrder>

 <ReorderLevel>1</ReorderLevel>

 <Discontinued>false</Discontinued>

</Products>

Отметим атрибут

Discount
элемента
Products
. Поэтому теперь, когда определены средства задания и получения свойств, можно добавить более сложную проверку кода в свойствах.

Что можно сказать о ситуации, когда имеются производные классы и, возможно, свойства, которые возвращают массив?

XmlSerializer
также это охватывает. Давайте обсудим более сложную ситуацию.

В событии

button1_Click
создается новый объект на основе
Product
и новый объект на основе
BookProduct
(
newProd
и
newBook
). Мы добавляем данные в различные свойства каждого объекта и помещаем объекты в массив на основе
Product
. Затем создается новый объект на основе
Inventory
, которому в качестве параметра передается массив. Затем можно сериализовать объект
Inventory
, чтобы впоследствии его восстановить:

Поделиться:
Популярные книги

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

Наномашины, "Шива"! Том 7

Новиков Николай Васильевич
7. Первый среди карапузов
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наномашины, Шива! Том 7

Титан: Возвращение

Рави Ивар
1. Титан
Фантастика:
героическая фантастика
боевая фантастика
4.86
рейтинг книги
Титан: Возвращение

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Седьмой Рубеж II

Бор Жорж
2. 5000 лет темноты
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Седьмой Рубеж II

Афганский рубеж 2

Дорин Михаил
2. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Афганский рубеж 2

Возвышение Меркурия. Книга 17

Кронос Александр
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17

Первый среди равных. Книга III

Бор Жорж
3. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
6.00
рейтинг книги
Первый среди равных. Книга III

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Идеальный мир для Лекаря 24

Сапфир Олег
24. Лекарь
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Идеальный мир для Лекаря 24

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Отверженный VIII: Шапка Мономаха

Опсокополос Алексис
8. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VIII: Шапка Мономаха

Моя (не) на одну ночь. Бесконтрактная любовь

Тоцка Тала
4. Шикарные Аверины
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Моя (не) на одну ночь. Бесконтрактная любовь

Последний реанорец. Том IV

Павлов Вел
3. Высшая Речь
Фантастика:
фэнтези
5.20
рейтинг книги
Последний реанорец. Том IV