Deserialize - не удается сохранить много объектов - C#
Формулировка задачи:
Привет всем. Пытаюсь считать xml файл для его последующего использования. Использую Deserialize.
XML-файл:
Класс которым десериализую:
Сама десериализация:
При попытке ее провести Студия ругается так:
<?xml version="1.0" encoding="windows-1251"?>
<JobArray>
<job>
<id>1</id>
<name>Демонтаж перегородки</name>
<price>3300</price>
<measure>куб.м.</measure>
</job>
<job>
<id>2</id>
<name>Кладка перегородки из газоблоков 100мм на клей из сухих смесей</name>
<price>270</price>
<measure>кв.м.</measure>
</job>
<job>
<id>3</id>
<name>Демонтаж плинтуса пола </name>
<price>20</price>
<measure>п.м.</measure>
</job>
<job>
<id>4</id>
<name>Подготовка поверхности стен (демонтаж обоев, расшивка швов, насечка и др.)</name>
<price>24</price>
<measure>кв.м</measure>
</job>
<job>
<id>5</id>
<name>Демонтаж розеток, выключателей</name>
<price>25</price>
<measure>шт.</measure>
</job>
</JobArray>
[Serializable]
public class job
{
public int id { get; set; }
public string name { get; set; }
public float price { get; set; }
public string measure { get; set; }
job() { }
job(int t1, string t2, float t3, string t4)
{
id = t1;
name = t2;
price = t3;
measure = t4;
}
public void PrintJob()
{
MessageBox.Show(name);
}
}XmlSerializer deserializerXS = new XmlSerializer(typeof (job), new XmlRootAttribute("JobArray"));
job[] rjob;
using (FileStream myFileStream = new FileStream(FullFileName, FileMode.Open))
{
rjob = (job[])deserializerXS.Deserialize(myFileStream);
}Дополнительные сведения: Не удалось привести тип объекта "Pasha1Wpf.job" к типу "Pasha1Wpf.job[]".
Что делать? Заранее спасибо.Решение задачи: «Deserialize - не удается сохранить много объектов»
textual
Листинг программы
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
class Program
{
private static bool _grayColor;
static void Main(string[] args)
{
string fullFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "XMLFile1.xml");
XmlSerializer deserializerXs = new XmlSerializer(typeof(JobCollection));
JobCollection rjob;
using (FileStream myFileStream = new FileStream(fullFileName, FileMode.Open))
{
rjob = (JobCollection)deserializerXs.Deserialize(myFileStream);
}
foreach (Job job in rjob.Jobs)
{
Console.WriteLine(job);
SwitchColor();
Console.WriteLine("-----------------------------------");
SwitchColor();
}
Console.ReadKey();
}
static void SwitchColor()
{
_grayColor = !_grayColor;
Console.ForegroundColor = _grayColor ? ConsoleColor.Gray : ConsoleColor.White;
}
}
}