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) НЕ СЕРИАЛИЗУЙТЕ ИНТЕРФЕЙСЫ!!!
|
|
| |