有没有办法在运行时获取 DefaultProperty 元数据?

Is there a way to get the DefaultProperty metadata at runtime?

我试图在 ActionScript 中获取 class 的 DefaultProperty 元数据,但我在元数据 XML 中找不到任何提及 DefaultProperty 的地方。

我正在使用以下代码:

var describedTypeRecord:DescribeTypeCacheRecord = mx.utils.DescribeTypeCache.describeType(BorderContainer);
var typeDescription:* = describedTypeRecord.typeDescription;

XML 很长,但这里是第一个节点returns:

<type name="spark.components::BorderContainer" base="spark.components::SkinnableContainer" isDynamic="false" isFinal="false" isStatic="false">

BorderContainer 或 SkinnableContainer 的默认 属性 是 mxmlContentFactory

[DefaultProperty("mxmlContentFactory")]

我也尝试过 RichText。默认的 属性 是 "content":

[DefaultProperty("content")]

它似乎没有在元数据中显示任何关于它的信息。

在编译器选项中我包含了编译器参数:

-keep-as3-metadata+=DefaultProperty

某些 classes 上没有设置,但如果定义了,它将在超级 classes 上定义。

我正在检查 BorderContainer,但它是在 SkinnableContainer 上定义的:

<metadata name="DefaultProperty">
  <arg key="" value="mxmlContentFactory"/>
</metadata>

我发布的代码在主 class 上定义时有效。如果 class 没有默认值 属性,我将获得所有超级 class 的列表并检查每一个,直到我到达对象或 UIComponent。