在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>