1

是否有可能通过某种元数据来强制设置对象的属性?我们有许多非可视组件,除非设置了一个或多个属性,否则它们根本不做任何事情,例如:

<ToolTip target="{this}">
    <mx:Image source="foo.png" />
</ToolTip>

在这种情况下,目标属性最好根据需要标记,因为从不设置它是没有意义的。这不是一个大问题,因为它很容易记录,但最好通过让编译器告诉开发人员他的错误来消除至少一些调试往返。

我们不希望这个标签以任何方式冗余,这可以通过简单地将 ToolTip 组件设置为 UIComponent 并使用 parent 属性来解决(在这种情况下)。但一方面,这增加了不必要的开销,在其他情况下,这根本不合适:

<Button id="btn" label="Foo" />
<ToolTip target="{btn}">
    <mx:Image source="foo.png" />
</ToolTip>

那么,强制 mxml 属性是否可能?

4

1 回答 1

1

有一个解决方案,但它不像使用元数据那么简单。只需让您的非可视组件实现 IMXMLObject 接口即可。该接口只有一种方法,“初始化”。实现该接口允许您检查通过 MXML 初始化的对象。

因此...

public function initialized(document:Object, id:String):void
{
  if ( target == null ) throw new Error( "You must supply an argument to target!" );
} 

有编译时检查会很好,但这很好用。

于 2009-05-06T17:41:54.497 回答