Flex反射工具类

前端开发 作者: 2024-08-25 16:35:01
原文->http://blog.csdn.net/arjick/article/details/6278116 基于Flex的反射工具类,在平常用的比较少,但是在使用反射机制填充AS对象属性等时候还是很有用的。 package com.shine.framework.core.util { import flash.utils.describeType; impo
package com.shine.framework.core.util  
{  
    import flash.utils.describeType;  
    import flash.utils.getDefinitionByName;  
    import flash.utils.getQualifiedClassName;    
    import flash.utils.getQualifiedSuperclassName;    
    import mx.utils.NameUtil;  
      
    import mx.collections.ArrayCollection;  
    import mx.controls.Alert;  
      
    public class ReferenceUtil  
    {  
        public function ReferenceUtil()  
        {  
        }  
          
        /** 
         * 获取class的object package::className 
         * */  
        public static function referenceClass(className:String):Object{  
            var ClassReference:Class = getDefinitionByName(className) as Class;  
            var instance:Object = new ClassReference();  
            return instance;  
        }  
          
        /** 
         * 获取class的value 
         * */  
        public static function referenceClassParameters(className:String,parameters:String):*{  
            return referenceClass(className)[parameters];  
        }  
          
        /** 
         * 执行方法 
         * */  
        public static function referenceClassFunction(className:String,functionName:String,... rest):*{  
            var instance:Object =referenceClass(className);  
            return instance[functionName].apply(instance,rest);   
        }  
          
        /** 
         * 执行方法 
         * */  
        public static function referenceObjectFunction(instance:Object,... rest):*{  
            return instance[functionName].apply(instance,rest);   
        }  
          
        /** 
         * 获取class name全名 
         * */  
        public static function getClassFullName(value:Object):String{  
            return getQualifiedClassName(value);  
        }  
          
          
        /** 
         * 获取class name 
         * */  
        public static function getClassName(value:Object):String{  
            if(getQualifiedClassName(value).indexOf("::")!=-1)  
                return getQualifiedClassName(value).substring(getQualifiedClassName(value).indexOf("::")+2);  
            else  
                return getClassFullName(value);  
        }  
          
        /** 
         * 获取所有的function列表 
         * ps:只能获取去方法的名称,不可以获取protected and private 
         * */  
        public static function getAllFunctionFromObject(instance:Object):ArrayCollection{  
            var functionArrayCollection:ArrayCollection=new ArrayCollection;  
            var method:XMLList=describeType(instance).method;  
            var num:int=method.length();  
            for(var i:int=0;i<num;i++){  
                var xml:XML=method[i];  
                functionArrayCollection.addItem(xml.@name);  
                xml=null;  
            }  
            return functionArrayCollection;  
        }  
    }  
} 
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68491.html
flex 反射 工具