1 package com.newtempo.utils{ 2 import flash.utils.describeType; 3 import flash.utils.getDefinitionByName; 4 import flash.utils.getQualifiedClassName; 5 6 /** 7 * 获取类的详细信息 8 * @author whk 9 * 10 */ 11 public class GetClassInfo{12 13 private static var classCache:Object = new Object();14 /**15 * 获取此类的信息 16 * @param target 分析的对象17 * @return 包含此类信息的对象18 * 19 */ 20 public static function describeType(target:*):ClassInfo{21 var className:String = getQualifiedClassName(target);22 if(className in classCache){23 return classCache[className];24 }25 //获取此类的全部信息26 var typeInfo:XML = flash.utils.describeType(target is Class ? target : getDefinitionByName(className) as Class);27 var methodNameList:XMLList = typeInfo..method.@name;28 var methodNames:Array = new Array();29 methodNames = getList(methodNames,methodNameList);30 31 var propertyNameList:XMLList = typeInfo..accessor.@name + typeInfo..variable.@name;32 var propertyNames:Array = new Array();33 propertyNames = getList(propertyNames,propertyNameList);34 35 var classInfo:ClassInfo = new ClassInfo();36 classInfo.className = className;37 classInfo.methodNames = methodNames;38 classInfo.typeInfo = typeInfo;39 classInfo.propertyNames =propertyNames;40 41 return classInfo;42 }43 44 private static function getList(arr:Array, xmlList:XMLList):Array{45 for each(var str:String in xmlList){46 arr.push(str);47 }48 return arr;49 }50 }51 }52 class ClassInfo{53 /**包含此类的所有方法数组 **/ 54 public var methodNames:Array;55 /**包含此类的所有属性数组 **/ 56 public var propertyNames:Array;57 /**包含此类的详细信息的XML**/ 58 public var typeInfo:XML;59 /**此类名 **/ 60 public var className:String;61 public function ClassInfo(){62 63 }64 }
参考自:http://bbs.blueidea.com/thread-2662636-1-1.html