Flex3与FluorineFx数据类型转换
一、AS3转换成.NET
1、基本类型 假如我们用一个方法向服务端发送一个人的基本信息:如姓名、邮箱和昵称等,可以简单地把姓名、邮箱和昵称作为该方法的参数传递。参数的个数及前后顺序位置要和服务端提供的方法一致,建议参数的类型客户端和服务端都保持一致。请参看后面提供的例子源文件中的doLogin()方法。 2、数组类型 同上述的基本类型,如果必用数组为参数,方法看起来简洁很多,但要注意的是数组元素的前后位置必须和服务端一致。AS3数组通过FluorineFx转换为.NET的IList接口数据类型。如AS3:1
public function addNote():void
2...{
3
_service.addNote(["信息标题","发布者","信息内容"]);
4
}.NET:1
public int addNote(IList list)
2 ...{
3
title = list[0];
4
name = list[1];
5
contnet = list[2];
6
...
7
} 3、关联数组类型 关联数组其实就是Object对象,它可以让我们动态添加属性。使用关联数组作为参数传递,可以不用考虑其元素个数及位置顺序。AS3关联数组通过FluorineFx转换为.NET的Hashtable类型。如AS3:1
public function addNote():void
2...{
3 _service.addNote(...{title:"信息标识",name:"发布者",content:"信息内容"});
4
}.NET:1
public int addNote(Hashtable ht)
2...{
3
title = ht["title"];
4
name = ht["name"];
5
contnet = ht["content"];
6
...
7
} 4、VO数据类型 通过FluorineFx,我们可以将AS3自定义对象(如例子中的noteVO.as)转换为.NET的值对象(如例子中的note.cs),从而实现AS3与.NET的映射(Mapping)。如例子中的addNote()方法,这两个类的名称可以不一样,属性名和属性个数都可以不一样(在开发过程,为了让代码比较直观,最好相同)。实现映射有以下两种方法: (1)在AS3类中注册类的别名,格式:[RemoteClass(alias=".NET全限定类名")](2)在.ENT的web.config中添加classmappings节点 1
<classMappings>
2
<classMapping>
3
<type>.Net全限定名</type>
4
<customClass>AS3全限定类名</customClass>
5
</classMapping>
6
</classMappings> 在某些情况下第一种方法失效,可以尝试第二种方法。很显然,用值对象向.NET传递数据是最方便的。 5、ByteArray数据类型 在AS3中ByteArray数据类型在应用中也占据着重要作用,传统的方法是在服务端进行二进制编码,效率很差。如果直接使用FluorineFx对AS3和.NET都使用ByteArray数据类型,那就方便且高效多了。二、.NET转换成AS3 1、数组类型 这里介绍.NET的ArrayList数据类型,其可以对应AS3(Flex)中的ArrayCollection数据类型。见源文件中使用getAllNotes()方法后转换数据的convertToData()方法。 2、IList非泛型/泛型 通过ArrayList数据类型来实现IList非泛型/泛型扫接口,从而实现它们转换成AS3的数据类型。如.NET:1
public IList getList()
2 ...{
3
ArrayList list = new ArrayList();
4
list.Add("Flying");
5
list.Add(30);
6
list.Add(false);
7
return list.ToArray();
8
}
9![http://www.soave.cn/Images/OutliningIndicators/None.gif]()
10
public IList<object> getGenericList()
11 ...{
12
ArrayList list = new ArrayList();
13
list.Add("Rose");
14
list.Add(28);
15
list.Add(true);
16
return list.ToArray();
17
} AS3:1
var arr:Array= re.result as Array;
2
lblResult.text = introduceMe(arr[0],arr[1],arr[2]);
1、基本类型 假如我们用一个方法向服务端发送一个人的基本信息:如姓名、邮箱和昵称等,可以简单地把姓名、邮箱和昵称作为该方法的参数传递。参数的个数及前后顺序位置要和服务端提供的方法一致,建议参数的类型客户端和服务端都保持一致。请参看后面提供的例子源文件中的doLogin()方法。 2、数组类型 同上述的基本类型,如果必用数组为参数,方法看起来简洁很多,但要注意的是数组元素的前后位置必须和服务端一致。AS3数组通过FluorineFx转换为.NET的IList接口数据类型。如AS3:1
2...{
3
4
2 ...{
3
4
5
6
7
2...{
3 _service.addNote(...{title:"信息标识",name:"发布者",content:"信息内容"});
4
2...{
3
4
5
6
7
2
3
4
5
6
2 ...{
3
4
5
6
7
8
9
10
11 ...{
12
13
14
15
16
17
2
posted on 2009-05-09 23:46 jinglikeblue 阅读(139) 评论(0) 收藏 举报