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
, чтобы впоследствии его восстановить:
Поделиться:
Популярные книги
Путь Чести
3. Жизни Архимага
Фантастика:
фэнтези
боевая фантастика
6.43
рейтинг книги
Идеальный мир для Социопата 3
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Кротовский, не начинайте
2. РОС: Изнанка Империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Под маской моего мужа
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Элита элит
1. Элита элит
Фантастика:
боевая фантастика
8.93
рейтинг книги
Вперед в прошлое 3
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Темный Патриарх Светлого Рода 5
5. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Менталист. Революция
3. Выиграть у времени
Фантастика:
боевая фантастика
5.48
рейтинг книги
Маршал Советского Союза. Трилогия
Маршал Советского Союза
Фантастика:
альтернативная история
8.37
рейтинг книги
Штурм Земли
8. Пробуждение Системы
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Баоларг
12. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Измена. Верну тебя, жена
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Законы Рода. Том 6
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00