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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д