Sérialisation / désérialisation d'objets
Bonjour,
je cherche à cloner un objet. La méthode ObjectUtil.clone() marche bien pour les objets possédant des propriétés de types primitifs mais ne marche plus lorsqu'il y a des propriétés référençant des objets de type non primitifs. En gros cette méthode ne marche quasiment jamais :mrgreen:
J'implémente donc l'interface IExternalizable pour mes classes à sérialiser et j'utilise la directive registerClassAlias("package.vers.ma.classe", MaClasse) dans le contructeur et c'est bon ca marche si je fais cela pour toutes les propriété/sous propriétés de toutes les classes filles de ma classe à sérialiser. J'ai juste à créer dans ma classe une méthode clone() :
Code:
1 2 3 4 5 6 7 8
|
public function clone():MaClasse
{
var ba:ByteArray = new ByteArray();
ba.writeObject(this);
ba.position = 0;
return ba.readObject() as MaClasse;
} |
Donc ca marche quand toutes les prorpiétés des sous classes sont de type perso (c'est à dire que j’édite les classes pour rajouter registerClassAlias etc..) mais comment faire lorsqu'une propriété d'un objet n'est pas de type "custom" ?
Dans mon cas de figure, une propriété d'une sous classe est de type HitData (objet de graphique). Si je laisse tel quel, j'ai l'erreur :
Citation:
TypeError: Error #1034: Echec de la contrainte de type*: conversion de Object@4b5a461 en mx.charts.HitData impossible.
comment pourrais je pallier à ce problème ? Sous classer HitData et me palucher la modification de toutes les références dans mon code ou...?
Merci de vos suggestions