![]() |
Сериализация/десириализация объектов, классы которых наследуются от Dictionary
В общем, не получается :)
Пример кода: Класс: Код AS3:
Код AS3:
Заранее спасибо за ваше потраченное время. |
Не всё сериализируется/рассериализируется тупо через writeObject/readObject, что могу сказать, например ещё
http://www.flasher.ru/forum/showthre...sterClassAlias IExternalizable не про writeObject/readObject, его, как я понял, используют где-то так: Код AS3:
|
Думаю явно не так, хоть и не пробовал его так использовать.
Дело в том, что для правильной сериализации/десиреализаци комплексных объектов (записи в массив байтов) - необходимо, чтобы они имплементили интерфейс IExternalizable, о чем и сказал wvxvw в этой теме http://www.flasher.ru/forum/showthre...sterClassAlias. В общем я делал так, и все всегда получалось. А вот теперь наткнулся на класс, который наследуется от Dictionary и застрял, так как из-з этого почему-то не работает. Хотя по идее в методах ByteArray writeObject() и readObject() должна делаться проверка на то, реализует ли объект интерфейс IExternalizable, а тут возникает такое чувство, что она не выполняется. |
без приведения посмотрите - читает что-либо или нет.
Код AS3:
|
Без приведения получается просто [object Dictionary]. Ну оно и правильно, что просто Dictionary. У меня расставленны трейсы в методах readExternal и writeExternal у класса, который наследуется от него, и они молчат.
Проблемма именно в классах, которые наследуется от Dictionary. так как я пробовал наследоваться и от Object, и от EventDispatcher. И все работает. А от Dictionary нет. |
Попробуйте регистрировать свой класс, через flash.net.registerClassAlias(). То, что для хранения объектов в SharedObject (где используется AMF) регистрировать свой класс надо - я знаю, а вот для ByteArray..
UPD: нужно - вот: http://blog.webdeely.com/2009/03/sto...-for-air-apps/ |
В написанном мною примере тестового класса - он регистрирует себя с помощью registerClassAlias() в констрокторе, причем регистрирует не только себя, но и Dictionary, от которого наследуется и все равно ен помогает. http://blog.webdeely.com/2009/03/sto...-for-air-apps/ - это я уже читал, там не для Dictionary, в таких случаях и у меня все ок. Попробуйте в примере, который я выложил заменить Dictionary на Object или EventDispatcher и все заработает.
|
Код AS3:
|
не :)
Если повнимательней посмотреть код, который я выложил - там эта строчка есть. Я еще много раз написал до этого, что все дело именно в Dictionary, если наследоваться от других классов - все работает. Я уже склонен верить, что это баг флэш плэера. Надеюсь кто-нибудь знающий объянит в чем дело и почему так. |
Меня слегка напрягает что алиас регистрируется в классе что сериализуется. Это нормальная практика?
|
| Часовой пояс GMT +4, время: 10:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.