2009-01-15 66 views
2

我有一个动态类,用作配置设置的存储容器。这些设置是该类的变量,它具有读取和写入配置文件,数据库等的方法。现在,只要类变量发生更改,就要触发写入持久存储。由于变量是在运行时动态添加的,所以我不能使用get/set方法,如果可以的话,这也会导致很多样板代码。在Flex中,我如何知道动态对象的属性何时更改?

如何为触发我的课程属性触发的事件?

回答

2

您可以从mx.utils.Proxy继承此类的此属性。它可以让你有对象是动态的,但仍然能够编写运行时属性被访问一些自定义代码(类似于getter和setter - 见getProperty()setProperty()

0

我会考虑避免动态对象,而是用一种存储方法和一种检索数据的方法创建数据存储类(SettingsModel?)。因此,而不是使用:

configurationSettings.randomSetting = value; 

...你可以这样写:

configurationSettings.store("randomSetting", value); 

你可以在内部存储的命名设置在一个字典,并做需要在store()方法做什么魔法。

这里的主要优点是可读性:当你看到一个被调用的方法时,你会知道它背后的功能。出于同样的原因,我倾向于不喜欢getter/setter函数。

最后这是一个味道问题,所以如果你的代码没有被破坏,为什么要修复它。 :)