2009-05-06 64 views
1

是否有可能通过某种元数据的推测,以强制对象的属性设置?我们有一些非可视化组件,仅仅除非一个或多个属性设置没有做任何事情,如:MXML中的强制属性?

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

在这种情况下,目标属性将是不错的标记为必需的,没有理由永远不要设置它。这不是一个大问题,因为它很容易记录,但通过让编译器告诉开发者他的错误,至少可以消除一些调试往返。

我们不希望这个标签在任何方面,本来可以通过简单地使工具提示组件在UIComponent并使用parent属性解决(在这种情况下)是多余的。但有一两件事,这增加了不必要的开销,而在其他情况下,它根本就不是正确的:

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

那么,是强制性的MXML属性的可能性?

回答

1

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

因此...

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

它会是不错的编译时检查,但是这个工作体面。

+0

非常感谢您的回答!我对这个界面一无所知,但我很高兴听到这个消息。我们有几个课程可以从中受益。 这是不幸的编译时间检查出来了,但我们肯定会用这个界面来管理。非常感谢! – 2009-05-06 18:26:52