AS3 - Vérifier qu'une classe hérite d'une autre...
Par -Alexandre LEGOUT aka LAlex- le 6 avril 2007, 16:40 - AS3 / Flex2 - Lien permanent
Ayant eu besoin de m'assurer qu'une classe (instance de Class) hérite d'une
autre, j'ai cherché un bon moment à reproduire mes anciennes habitudes issues
de l'AS2, à savoir utiliser les bons vieux prototypes agrémentés d'une touche
de "is" histoire de faire plus actuel... ![]()
Autant vous le dire tout de suite: ca ne donne rien! ![]()
Il faut donc se tourner vers les excellentes fonctions de reflexion que nous
fournis l'AS3 pour arriver à son bonheur, en agrémentant ca de E4X! ![]()
import flash.utils.describeType;
import flash.utils.getQualifiedClassName;
public function inherit(childClass:Class, parentClass:Class) : Boolean {
return describeType(childClass).factory.extendsClass.(@type==getQualifiedClassName(parentClass)).length() > 0;
}
Et wala! ![]()
Commentaires
et en faisant un cast dans un try ... catch ?
si ca passe, c'est que l'instance hérite, sinon ça hérite pas
@neo> Trés bien si on a déjà une instance de la classe à tester... mais s'il s'agi d'une 'Class', ca oblige à l'instancier, et donc éventuellement à lancer tout un tas d'instructions (constructeur) qu'on veut éviter de lancer...
++ ^^
ah oui ok, tester directement une Class
j'avais pas tilté
Supere petite méthode Lalex, merci !
Fil des commentaires de ce billet