Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
.NET 4.x

Не работает десериализация

14.10.2014, 15:51. Показов 1410. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Будьте добры, помогите найти проблему.
Вот код:

C#
1
2
3
4
5
6
7
8
9
public void Des(System.Windows.Forms.RichTextBox rtb)
    {
        Class1 c;
        IFormatter formatter = new BinaryFormatter();
              using (FileStream s = File.OpenRead(@"D:\serial.bin"))
            c = (Class1)formatter.Deserialize(s); //System.InvalidCastException - Не удалось привести тип объекта "System.Collections.Generic.List`1[Class1]" к типу "Class1".
        rtb.Text = (c.name + " " + c.age);
        
    }
Вот код класса с конструктором:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Serializable]
public class Class1
{
   [DataMember]
   public string name;
   [DataMember]
    public string age;
    [DataMember]
   public List<Class1> lst = new List<Class1>();
 
    public Class1(string tb1, string tb2)
    {
        this.name = tb1;
        this.age = tb2;
 
    }
Использую VS2013.

Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2014, 15:51
Ответы с готовыми решениями:

Не работает десериализация JSON
У меня есть класс Doctor который принимает значение: public class Doctor { public string doctorsId { get; set; } ...

Десериализация работает на одном комьютере и не работает на другом
Провожу десериализацию из файла - на компе разработки все нормально, на компе пользователя - выходит ошибка что статичные поля класса...

Десериализация не работает
Доброго времени суток! Помогите пожалуйста разобраться в чем проблема. Есть код(приаттачен), не могу понять почему не работает...

7
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
14.10.2014, 15:55
http://technet.microsoft.com/r... ption.aspx
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
14.10.2014, 15:56
Побуду кэпом: Сериализуешь typeof(List<Class1>) а при десериализации пытаешься его привести к типу typeof(Class1).
1
 Аватар для Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
14.10.2014, 23:14  [ТС]
Спасибо за ответы. Я суть понимаю, но не знаю, как выкрутиться. Я по книжке делал сериализацию и десериализацию тоже. Поэтому, я особыми знаниями в этой области не владею. .NET для меня платформа относительно новая. До этого сидел на чистых плюсах, а там попроще с записью/считыванием объектов в файл/из файла.
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
14.10.2014, 23:30
C#
1
2
var object = formatter.Deserialize(s);
object.GetType().Name //читаем и вникаем.
0
 Аватар для Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
15.10.2014, 15:12  [ТС]
sau, пардон, но оно мне выдало ту информацию, которую даёт сама студия по этой исключительной ситуации, то есть - ничего нового.
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
15.10.2014, 16:01
Вам выдало реальный тип обьекта , к которому следует приводить.
Хотя да , это и в исключении указано , тогда что тут еще непонятно то ?

Побуду кэпом: Сериализуешь typeof(List<Class1>) а при десериализации пытаешься его привести к типу typeof(Class1).
1
 Аватар для Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
15.10.2014, 16:20  [ТС]
sau, пардон за мой затуп.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void Des(System.Windows.Forms.RichTextBox rtb)
    {
        
        List<Class1>  c;
 
      IFormatter formatter = new BinaryFormatter();
        
             using (FileStream s = File.OpenRead(@"D:\serial.bin"))
      {
          c = (List<Class1>)formatter.Deserialize(s);
        foreach(var item in c)
              rtb.Text = (Convert.ToString(item.age) + Convert.ToString(item.name));
      }
        
    }
Окей, с одним экземпляром класса в списке разобрались. А если у меня в списке несколько экземпляров класса?

Мне это нужно для того, чтоб потом определённому экземпляру присвоить значение null, то есть, удалить его, и потом опять впихнуть в список и сериализовать его.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2014, 16:20
Помогаю со студенческими работами здесь

Сериализация работает, десериализация - нет
Здравстуйте. Довольно комичная ситуация возникла. Делаю сериализацию листа в файл, а десериализация не работает. Файл никак не меняется,...

Сериализация и десериализация в одном из методов не работает как положено
в двух классах есть методы сериализации и десериализации, в одном все работает нормально, во втором нет, подскажите в чем проблема public...

Сериализация работает(вроде), а десериализация - нет
Всем привет. Я написал некую программу на Java, при первом запуске которой с консоли вводятся данные для создание объектов класса Bus, а...

Десериализация
Предположим, создал класс public class OrderedItem1 { public string Name; public string Content; ...

Десериализация
Всем привет. Помогите разобраться. Я сериализую лист в xml. После этого я десериализую его и добавляю новый элемент. Но в листе он не...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru