Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/23: Рейтинг темы: голосов - 23, средняя оценка - 4.96
Kill100
419 / 285 / 81
Регистрация: 11.12.2010
Сообщений: 1,195
Завершенные тесты: 1
#1

Возникла ошибка при отражении типа во время XML сериализации

07.05.2012, 13:15. Просмотров 4173. Ответов 2
Метки нет (Все метки)

В строке
C#
1
2
3
4
5
6
                using (Stream Read = File.Create(FileName))
                {
                    FilialList = new BindingList<Filial>();
                    XmlSerializer XmlSer = new XmlSerializer(typeof(BindingList<Filial>));
                    XmlSer.Serialize(Read, FilialList);
                }
Прога выбивает ошибку
Код
Возникла ошибка при отражении типа "System.ComponentModel.BindingList`1[Test.Filial]".
при попытке сериализовать файл.
Не как не могу понять в чем ошибка.
Уже 2 раз переписываю классы а ошибка осталась
Класс Filial
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Test
{
    [Serializable]
    public class Filial
    {
        /// <summary>
        /// Список товаров в филиале
        /// </summary>
        public Dictionary<Tovar, CountTovar> TovarDictionary = new Dictionary<Tovar, CountTovar>();
        //         {
        //             get;
        //             set;
        //         }
 
        /// <summary>
        /// Список сотрудников в филиале
        /// </summary>
        public List<Cotrudnik> CotrudnikList = new List<Cotrudnik>();
//         {
//             get;
//             set;
//         }
        /// <summary>
        /// Добавление товара на склад филиала
        /// </summary>
        /// <param name="tovar">Добавляемый товар</param>
        /// <param name="Count">Количество добавляемого товара</param>
        public void AddTovarInFilial(Tovar tovar, Int32 Count)
        {
            if (TovarDictionary.ContainsKey(tovar))
            {
                TovarDictionary[tovar].Count += Count;
                TovarDictionary[tovar].Data = DateTime.Now;
            }
            else
            {
                TovarDictionary.Add(tovar, new CountTovar { Count = Count, Data = DateTime.Now });
            }
        }
        /// <summary>
        /// Удаление товара с склада филиала
        /// </summary>
        /// <param name="tovar">Удаляемый товар</param>
        /// <param name="Count">Количество удаляемого товара</param>
        public void DeleteTovarOfFilial(Tovar tovar, Int32 Count)
        {
            if (TovarDictionary.ContainsKey(tovar))
            {
                if (TovarDictionary[tovar].Count == 1)
                    TovarDictionary.Remove(tovar);
                else
                {
                    if (TovarDictionary[tovar].Count >= Count)
                        TovarDictionary[tovar].Count -= Count;
                    else
                    {
                        throw new Exception("Вы пытаетесь удалить больше чем есть в корзине");
                    }
                }
            }
        }
    }
}
класс Cotrudnik
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Test
{
    public class Cotrudnik
    {
        /// <summary>
        /// Имя сотрудника
        /// </summary>
        public String Name
        {
            get;
            set;
        }
 
        /// <summary>
        /// Пароль сотрудника
        /// </summary>
        public String Password
        {
            get;
            set;
        }
 
        /// <summary>
        /// Список товаров у сотрудника
        /// </summary>
        public List<Karzina> KarzinaList = new List<Karzina>();
//         {
//             get;
//             set;
//         }
        /// <summary>
        /// Этот сотрудник наделен правами администратора?
        /// </summary>
        public Boolean ItIsAdmin
        {
            get;
            set;
        }
    }
}
Класс CountTovar
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Test
{
    public class CountTovar
    {
        /// <summary>
        /// Количество товара
        /// </summary>
        public int Count
        {
            get;
            set;
        }
        /// <summary>
        /// Дата добавления товара
        /// </summary>
        public DateTime Data
        {
            get;
            set;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2012, 13:15
Ответы с готовыми решениями:

Ошибка InvalidOperationException при Xml сериализации
Здравствуйте! У меня возникла проблема при xml сериализации. Суть проблемы...

Исключение InvalidOperationException при XML сериализации
При выполнении вот такого кода XmlSerializer xml = new...

Комментарии при сериализации класса в xml
Здравствуйте. Вот я делаю серилизацию таким образом public bool...

Как избавиться от мусора при XML сериализации?
Добрый день. Ситуация такая. Есть класс содержащий список определённых...

DataContractSerializer при xml сериализации затрагивает игнорируемые поля
Привет всем. Вот класс, который я сериализую: public class...

2
Yukikaze
341 / 320 / 48
Регистрация: 12.12.2011
Сообщений: 563
07.05.2012, 15:10 #2
Проблема такая же как и здесь XML сериализация и ошибка "it does not have a parameterless constructor"
C# не знает как сериализировать в XML BindingList, а так же Dictionary. Вы можете написать классы поддерживающие XML сериализацию или воспользоваться бинарной
1
Kill100
419 / 285 / 81
Регистрация: 11.12.2010
Сообщений: 1,195
Завершенные тесты: 1
07.05.2012, 17:20  [ТС] #3
BindingList он умеет сериализовать.
Сам то же так подумал что что то не то с типами в классе. Какие то не поддерживаю сериализацию. Раньше уже сталкивался с подобным String[,]
Спс.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2012, 17:20

Ошибка при сериализации
При компиляции вылетает такая ошибка: Cannot create and instance of the...

Ошибка при сериализации
случилось у меня такая ситуация, что есть у меня класс, который я успешно...

Ошибка при сериализации от клиента серверу
Передаём данные между сервером и клиентом, при первой сериализации от клиента к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru