In Flex, wie kann ich wissen, wenn Sie die Eigenschaften eines dynamischen Objekt ändern?

StackOverflow https://stackoverflow.com/questions/447002

Frage

Ich habe eine dynamische Klasse, die für Konfigurationseinstellungen als Vorratsbehälter dient. Die Einstellungen sind Variablen dieser Klasse und es hat Methoden zum Lesen und usw. in einer Konfigurationsdatei, Datenbank schreiben Jetzt möchte ich auf die persistente Speicherung auszulösen Schreiben, wenn eine Klassenvariable geändert wird. Da die Variablen zur Laufzeit dynamisch hinzugefügt werden, kann ich nicht / set-Methoden erhalten verwenden, auch, wenn ich könnte, dass zu viel Standardcode führen würde.

Wie kann ich ein Ereignis zum Ändern Eigenschaften meiner Klasse ausgelöst?

War es hilfreich?

Lösung

Sie können die Unterklasse dieser Klasse von Ihnen von mx.utils.Proxy . Es ermöglicht Ihnen, das Objekt zu haben, dynamisch sein dennoch in der Lage sein, einigen benutzerdefinierten Code zu schreiben, der ausgeführt wird, wenn Eigenschaften zugegriffen werden (ähnlich wie Getter und Setter - siehe getProperty() und setProperty() .)

Andere Tipps

Ich würde das dynamische Objekt zu vermeiden und vielmehr die Datenspeicher-Klasse (SettingsModel?) Erstelle mit einem Verfahren zum Speichern und ein Verfahren zum Abrufen von Daten. Anstatt also mit:

configurationSettings.randomSetting = value;

... Sie würde schreiben:

configurationSettings.store("randomSetting", value);

Sie können die genannten Einstellungen speichern intern in einem Wörterbuch, und tun, was Magie in der store() Methode getan werden muss.

Der Hauptvorteil ist hier die Lesbarkeit: Wenn Sie eine Methode siehe aufgerufen wird, wissen Sie Funktionalität dahinter gibt. Aus dem gleichen Grunde neige ich Getter / Setter-Funktionen nicht mögen.

Am Ende ist es eine Frage des Geschmacks, also, wenn Ihr Code nicht kaputt ist, warum es beheben. :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top