标记为[RemoteClass]的类中的序列化/反序列化回调

时间:2011-06-03 10:15:34

标签: flex actionscript amf

我一直致力于使用值对象(VO)来操作客户端数据的Flex项目。在类定义之前,在[RemoteClass]标记的帮助下填充VO。

数据库结构已经过优化,因此这些表格包含以下字段:

optionsName:“1,2,3,4,5,6”

在项目范围内,此值(“1,2,3,4,5,6”)表示一组动态数字。

默认情况下,optionsName类字段填充字符串“1,2,3,4,5,6”,它可以正常工作。但是我将此字段用作与业务逻辑对应的一组数字,并且将它们作为数组实例操作更方便。一般来说,最好的解决方案是订阅VO的序列化/反序列化事件并执行额外的转换。

问题是:如何在Flex / ActionScript中实现这一目标?

我知道当结果从远程对象到达时我可以这样做,但从我的角度来看,这不是一个好的解决方案。我也知道实现flash.utils.IExternalizable接口的解决方案。

主要思想是强制Flex在序列化之前和反序列化VO之后调用所需的方法。

提前谢谢。

祝你好运, Viktor Burdeinyi

1 个答案:

答案 0 :(得分:1)

将该属性写为支持字符串和数组作为输入的setter,并即时转换。

private var _optionsName:Array;
public function get optionsName():Array { return _optionsName; }
public function set optionsName(newOptionsName:*):void {
    if(newOptionsName is String) {
        _optionsName = newOptionsName.split(", ");
    } else {
        _optionsName = newOptionsName as Array;
    }
}