Ist es möglich, durch eine Art von Metadaten, möglicherweise eine Eigenschaft eines Objekts zu erzwingen? Wir haben eine Reihe von nicht-visuellen Komponenten, die einfach nichts tun, wenn eine oder mehr Eigenschaften festgelegt sind, wie zum Beispiel:Obligatorische Attribute in MXML?
<ToolTip target="{this}">
<mx:Image source="foo.png" />
</ToolTip>
In diesem Fall würde die Zieleigenschaft schön sein, wie erforderlich zu markieren, wie es macht keinen Sinn, es nie zu setzen. Dies ist kein großes Problem, da es leicht zu dokumentieren ist, aber es wäre schön, wenigstens ein paar Debug-Roundtrips zu eliminieren, indem der Compiler den Entwickler über seinen Fehler informiert.
Wir möchten nicht, dass dieses Tag in irgendeiner Weise redundant ist, was (in diesem Fall) gelöst werden könnte, indem einfach die ToolTip-Komponente zu einer UIComponent gemacht und die parent-Eigenschaft verwendet wird. Aber für eine Sache, fügt dieser unnötigen Aufwand und in anderen Fällen ist es einfach nicht richtig:
<Button id="btn" label="Foo" />
<ToolTip target="{btn}">
<mx:Image source="foo.png" />
</ToolTip>
So sind obligatorisch mxml eine Möglichkeit Attribute?
Vielen Dank für Ihre Antwort! Ich hatte keine Ahnung von dieser Schnittstelle, aber ich bin froh darüber zu hören. Wir haben mehrere Klassen, die davon profitieren können. Es ist schade, dass Kompilierzeit Überprüfung ist out, aber wir werden auf jeden Fall mit dieser Schnittstelle verwalten. Danke vielmals! –
Folgefrage: Gibt es eine andere Schnittstelle, die implementiert werden kann, wenn die Eigenschaft, die der mxmlc-Compiler generiert, geändert wird? Angenommen, ich habe eine nicht visuelle Komponente, die IMXMObject implementiert, und das Tag, wenn es einem mxml-Dokument hinzugefügt wird, erhält die ID "foo". Dies erzeugt die Eigenschaft foo mit einem Verweis auf das Objekt, das aus der mxml-Beschreibung instanziiert wurde, richtig? Wenn ich nun diese Referenz auf eine neue Instanz ändere, kann meine Instanz irgendwie davon wissen? Außerdem nehme ich an, dass diese Schnittstelle nur für deklarierte Instanzen, nicht für Laufzeit-Instanzen, geeignet ist. –