Понедельник, 25 Ноября 2024, 06:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Cериализация
EzKekPoliceДата: Понедельник, 05 Сентября 2016, 22:34 | Сообщение # 1
частый гость
Сейчас нет на сайте
Привет всем, в общем настала такая нужда, то что мне нужно сериализовать класс rкоторый содержит в себе интерфейс IProp и в этом классе может быть любой подкласс который реализует интерфейс IProp в данном примере это Prop, содержит от поле AnimationCurve.

Так вот в классе Demo при старте программы создается экземпляр класса Seritem, потом он сериализуется в файл и происходит небольшой дебаг.
Сериализуется он превосходно в файле все значения есть и т.д.

Но при попытки десериализовать этот файл, выдается исключение: XmlException: Type not found; name: Prop

My WebPage = IProp
My WebPage = Prop
My WebPage = SerItem
My WebPage = Demo


Сообщение отредактировал EzKekPolice - Понедельник, 05 Сентября 2016, 22:47
RangerДата: Среда, 07 Сентября 2016, 17:44 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
сериализация/десериализация экземпляров интерфейсов не допустима архитектурой C#.
1) интерфейсы - (в терминах С++) чистые абстрактные виртуальные классы по этому смотрим пункт 2
2) нельзя создать экземпляр интерфейса
3) значит под интерфейс можно спрятать только "наследника" такого интерфейса
4) при сериализации библиотека Json .NET знает какие экземпляры каких классов она превращает в json
5) при десереализации json обратно в экземпляр класса эта информация теряется
6) поэтому без сохранения информации о типах инициализация экземпляров интерфейсов не возможна
7) т. к. информация о типах в виде json занимает много места и зачастую бесполезна то общий вывод таков
8) НЕ СЕРИАЛИЗУЙТЕ ИНТЕРФЕЙСЫ!!!


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг