2010-03-26 4 views
0

Что такое поддержка сериализации, как для нового класса Vector? У меня есть Vector.<GameMove>, который я хотел бы сериализовать в ByteArray. GameMove - это нестандартный класс.Сериализация AS3 вектора пользовательских объектов

Предполагаю, что необходимо позвонить registerClassAlias() по телефону GameMove, но мне также необходимо зарегистрировать Vector.<GameMove>? Это он собственный отличительный тип, или он вроде бы состоит из этих двух типов?

ответ

0

Как оказалось, нет, вектор, содержащий пользовательский тип, не должен быть зарегистрирован как «пара» в дополнение к типу, который он содержит.

Фактически, Vector не нужно регистрировать вообще, кажется - только тип, который он держит. По крайней мере, в моем случае сериализации для ByteArray (AMF3, конечно).


Как и в стороне, однако, я нашел очень странный вопрос, где не может быть десериализованными подклассы Array. Я отправлю это в seperate question.

0

Отправитель всегда имеет контроль над тем, какой класс используется при сериализации объекта. Например, Fluorine отправит все, что реализует IList в .NET, как ArrayCollection для клиента Flex или Array для клиента Flash. В этом случае нет опции, кроме использования ArrayCollection или Array.

Другие модификации AMF могут отличаться. Процессы фтора регистрируют псевдонимы классов, но другие могут сделать это в первую очередь. Итак, будь то Вектор. <> будет корректно сериализоваться в обоих направлениях, зависит от используемого вами сервера.

Лучший способ узнать, работает ли он с вашим сервером, - это просто проверить его. Затем, если это не сработает, задайте более конкретный вопрос, чтобы выяснить, есть ли способ обхода или если он считается ошибкой.

+0

Спасибо, Сэм. Хотя я на самом деле не сериализуюсь на сервере, просто в ByteArray для настойчивости, поэтому для меня важна внутренняя реализация «amp3» игрока. – aaaidan

Смежные вопросы