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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы