zoukankan      html  css  js  c++  java
  • Flex AS3数据类型转换成Fluorine数据类型

    Fluorine的官方帮助是以AMF0和AMF3两个版本来讲解Flex AS3(以 下简称AS3)与Fluorine .NET之间(以下简称.NET)的数据类型转换的,此处我们仅以AMF3版本来介绍。几种数据类型转换方式中最方便的应该是AS3自定义对象转换为.NET值对象。

    一、AS3转换成.NET(以ToNetType.mxml和ToNetType.cs为例)

    1.基本类型的数据

    比如说我们用一个方法要向服务器端发送一个人的基本信息:比如姓名、年龄和婚姻状况,可以简单地把姓名、年龄和婚姻状况作为该方法的参数 传递。参数的个数及前后位置要和.Net对应,参数一多,很容易出错。而且很多时候还需要用.Net再次转换。此类数据转换基本上是一一对应,和HTTP Service和Web Service差不 多,体现不了Remoting Service技术的优势。请参看源文件中的sendArgs方法。

    2.数组类型

    同样是上述情形,如果改用数组为参数,方法会看起来简洁很多。不过仍然数组的元素的前后位置也必须与服务器端一致。AS3数组通 过Fluorine转换为.NET的IList接口数据类型,详情请参看sendArray方法。

    3.关联数组类型

    联数组其实就是Object对象,它可以让我们动态添加属性。参数变成了Object对象的属性,再将Object对象高级参数传递,再也不用担心AS3 与.Net文件中方法的参数个数及顺序必须一致了。AS3关联数组通过Fluorine转换为.NET的Hashtable,请参看AssoArray方法。

    4.VO数据类型

    再通过Fluorine,我们可以将ActionScript 自定义对象(如Person.as)转换为.NET的值对象(VO)(如Person.cs),从而实现AS3与.NET的Mapping(映 射)。如sendVO方法,这两个类的类名可以不一样,属性名和属性个数都可以不一样(为了好记,最好相同)。实现映射有以下两种方法:

    (1) 在ActionScript 类中注册类的别名。使用RemoteClass(alias=".Net全限定类名");

    (2) 在web.config 文件中添加classMappings节点。

    <classMappings>
    	<classMapping>
    		<type>.Net全限定名</type>
    		<customClass>AS3全限定类名</customClass>
    	</classMapping>
    </classMappings>

    在某些情况下第一种方法失效,可以尝试第二种方法。很显然,用值对象向.NET传递数据是最方便的。

    当然还有ByteArray数据类型也是很重要的,比如说常见的大头拍应用,传统的方法在服务器端进行二进制编码,很麻烦效率也很差。如果用 Fluorine对AS3和.NET都直接使用ByteArray数据类型,那就方便高效多了。

    点击此处查看转换效果,点击此处

    文章来源:http://www.riafan.com/article/flex/trackback.asp?tbID=84&action=addtb&tbKey=cbef1cdad1fc22b404e85c750cec9d65bddffd1c

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/bmate/p/1675484.html
Copyright © 2011-2022 走看看