论坛首页 编程语言技术论坛

Flex 获得注解信息

浏览 2066 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-25   最后修改:2010-02-25
在Flex中自定义元数据(Metadata)标签(类似[Event],[Bindable]),作为注解信息

原文看这里

1. 配置编译器

对于新的Flex项目:在"additional compiler arguments(附加的编译器参数)"中添加 "-keep-as3-metadata = Meta1,Meta2"。注意,使用逗号来分隔不同的元数据标签。


提示:如果项目是ActionScript Library,则添加"keep-as3-metadata"作为附加的参数,然后将编译好的SWC载入项目,直接使用定义的元数据标签即可,无需再在"additional compiler arguments"中设置附加参数。

2.使用元数据标签

示例:

package
{
[Meta2(param1 = "param 1 value")]
public class TestClass
{

    [Meta1(param1 = "param 1 value", param2 = "param 2 value")]
    public var test1:String;


    [Meta2(paramA = "param 1 value", paramB = "param 2 value")]
    public function get test2():String
    {
        return null;
    }

    public function set test2(val:String):void
    {
    }

    [Meta1(param1 = "param 1 value")]
    public function someMethod():void
    {
    };

}
}

3. 在运行时使用元数据
只需调用describeType(TestClass)并使用E4X在结果中查找所需的数据即可

<type name="TestClass" base="Class" isDynamic="true" isFinal="true" isStatic="true">
<extendsClass type="Class"/>
<extendsClass type="Object"/>
<accessor name="prototype" access="readonly" type="*" declaredBy="Class"/>
<factory type="TestClass">


<metadata name="Meta2">
   <arg key="param1" value="param 1 value"/>
</metadata>


<extendsClass type="Object"/>


<method name="someMethod" declaredBy="TestClass" returnType="void">
   <metadata name="Meta1">
     <arg key="param1" value="param 1 value"/>
   </metadata>
</method>


<variable name="test1" type="String">
   <metadata name="Meta1">
     <arg key="param1" value="param 1 value"/>
     <arg key="param2" value="param 2 value"/>
   </metadata>
</variable>


<accessor name="test2" access="readwrite" type="String" declaredBy="TestClass">
   <metadata name="Meta2">
     <arg key="paramA" value="param 1 value"/>
     <arg key="paramB" value="param 2 value"/>
   </metadata>
</accessor>


</factory>
</type>
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics