Fluorine数据类型转换成Flex AS3数据类型

当然Flex ActionScript 3.0(以下简称AS3)与Fluorine .NET(以下简称.NET)之间的数据转换是双向的。比如在前面的示例我们用一个方法要向.Net发送一个人的基本信息,最后以字符的形式将结果返回Flash player。复杂一点的话,会先 Flash Player该条数据添加到数据库中再返回一个数据集,当点击某条记录时再返回该记录的详细数据。这都会涉及到AS3与.NET之间的数据交换。这次我们讲解怎样将.NET数据类型转换成AS3数据类型。

二、.NET转换成AS3(以ToASType.mxml和ToASType.cs为例)

由于.NET支持的数据类型很丰富,因此这种转换更多也更有价值。

1. 数组类型

在AS3中,数组元素的数据类型可以不一样。但.Net对数组类型的强性限制。因此本实例不适合用这种方法。

2. IList非泛型/泛型

原理就是通过ArrayList类或Object类来实现IList非泛型/泛型接口,从而实现它们转换成AS3 数组类型,请参看getList和getGenericList方法。

3. IDictionary非通用/泛型

我们可以通过Hashtable/ASObject类或Object类来实现IDictionary非通用/泛型接口,从而实现它们转换成AS3 关联数组/Object类型,请参看 getAssoArray、 getDictionary 、getGenericDic和getASObjec方法。

4. VO数据类型

既然是映射,.NET值对象也可以很方便地转换为AS3自定义对象,具体请参看getVO方法和上一回讲解内容。

5. 数据集/表

使用Fluorine可以将.Net数据集/表转换成AS3的DataTable对象(ASObject)/关联DataTable对象数组(ASObject)/,方便地为ComboBox、DataGrid、 List 、TreeList和 TileList等组件提供数据源,这才真正体现Remoting Service技术的优势。我们甚至可以在方法外部添加元数据标签,如[DataTableType(string remoteClass)],从而指定DataTable的数据类型。表每一行被序列化成一个值对象(VO),各列名称就是该值对象名称。

注意:Flash Remoting AS2中的RecordSet已经被Flex AS3的ArrayCollection取代。

点击此处查看转换效果。

相关帮助:

  1. http://fluorine.thesilentgroup.com/fluorine/typeconversionamf3.html
  2. http://fluorine.thesilentgroup.com/fluorine/rpcdata.html

发表评论