Flex3与FluorineFx数据类型转换

一、AS3转换成.NET
1、基本类型 假如我们用一个方法向服务端发送一个人的基本信息:如姓名、邮箱和昵称等,可以简单地把姓名、邮箱和昵称作为该方法的参数传递。参数的个数及前后顺序位置要和服务端提供的方法一致,建议参数的类型客户端和服务端都保持一致。请参看后面提供的例子源文件中的doLogin()方法。 2、数组类型 同上述的基本类型,如果必用数组为参数,方法看起来简洁很多,但要注意的是数组元素的前后位置必须和服务端一致。AS3数组通过FluorineFx转换为.NET的IList接口数据类型。如AS3:1http://www.soave.cn/Images/OutliningIndicators/None.gifpublic function addNote():void
2...{
3http://www.soave.cn/Images/OutliningIndicators/InBlock.gif _service.addNote(["信息标题","发布者","信息内容"]);
4http://www.soave.cn/Images/OutliningIndicators/ExpandedBlockEnd.gif}.NET:1http://www.soave.cn/Images/OutliningIndicators/None.gif public int addNote(IList list)
2 ...{
3http://www.soave.cn/Images/OutliningIndicators/InBlock.gif title = list[0];
4http://www.soave.cn/Images/OutliningIndicators/InBlock.gif name = list[1];
5http://www.soave.cn/Images/OutliningIndicators/InBlock.gif contnet = list[2];
6http://www.soave.cn/Images/OutliningIndicators/InBlock.gif ...
7http://www.soave.cn/Images/OutliningIndicators/ExpandedBlockEnd.gif } 3、关联数组类型 关联数组其实就是Object对象,它可以让我们动态添加属性。使用关联数组作为参数传递,可以不用考虑其元素个数及位置顺序。AS3关联数组通过FluorineFx转换为.NET的Hashtable类型。如AS3:1http://www.soave.cn/Images/OutliningIndicators/None.gifpublic function addNote():void
2...{
3 _service.addNote(...{title:"信息标识",name:"发布者",content:"信息内容"});
4http://www.soave.cn/Images/OutliningIndicators/ExpandedBlockEnd.gif}.NET:1http://www.soave.cn/Images/OutliningIndicators/None.gifpublic int addNote(Hashtable ht)
2...{
3http://www.soave.cn/Images/OutliningIndicators/InBlock.gif title = ht["title"];
4http://www.soave.cn/Images/OutliningIndicators/InBlock.gif name = ht["name"];
5http://www.soave.cn/Images/OutliningIndicators/InBlock.gif contnet = ht["content"];
6http://www.soave.cn/Images/OutliningIndicators/InBlock.gif ...
7http://www.soave.cn/Images/OutliningIndicators/ExpandedBlockEnd.gif} 4、VO数据类型 通过FluorineFx,我们可以将AS3自定义对象(如例子中的noteVO.as)转换为.NET的值对象(如例子中的note.cs),从而实现AS3与.NET的映射(Mapping)。如例子中的addNote()方法,这两个类的名称可以不一样,属性名和属性个数都可以不一样(在开发过程,为了让代码比较直观,最好相同)。实现映射有以下两种方法: (1)在AS3类中注册类的别名,格式:[RemoteClass(alias=".NET全限定类名")](2)在.ENT的web.config中添加classmappings节点 1http://www.soave.cn/Images/OutliningIndicators/None.gif<classMappings>
2http://www.soave.cn/Images/OutliningIndicators/None.gif <classMapping>
3http://www.soave.cn/Images/OutliningIndicators/None.gif <type>.Net全限定名</type>
4http://www.soave.cn/Images/OutliningIndicators/None.gif <customClass>AS3全限定类名</customClass>
5http://www.soave.cn/Images/OutliningIndicators/None.gif </classMapping>
6http://www.soave.cn/Images/OutliningIndicators/None.gif</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:1http://www.soave.cn/Images/OutliningIndicators/None.gif public IList getList()
2 ...{
3http://www.soave.cn/Images/OutliningIndicators/InBlock.gif ArrayList list = new ArrayList();
4http://www.soave.cn/Images/OutliningIndicators/InBlock.gif list.Add("Flying");
5http://www.soave.cn/Images/OutliningIndicators/InBlock.gif list.Add(30);
6http://www.soave.cn/Images/OutliningIndicators/InBlock.gif list.Add(false);
7http://www.soave.cn/Images/OutliningIndicators/InBlock.gif return list.ToArray();
8http://www.soave.cn/Images/OutliningIndicators/ExpandedBlockEnd.gif }
9http://www.soave.cn/Images/OutliningIndicators/None.gif
10http://www.soave.cn/Images/OutliningIndicators/None.gif public IList<object> getGenericList()
11 ...{
12http://www.soave.cn/Images/OutliningIndicators/InBlock.gif ArrayList list = new ArrayList();
13http://www.soave.cn/Images/OutliningIndicators/InBlock.gif list.Add("Rose");
14http://www.soave.cn/Images/OutliningIndicators/InBlock.gif list.Add(28);
15http://www.soave.cn/Images/OutliningIndicators/InBlock.gif list.Add(true);
16http://www.soave.cn/Images/OutliningIndicators/InBlock.gif return list.ToArray();
17http://www.soave.cn/Images/OutliningIndicators/ExpandedBlockEnd.gif } AS3:1http://www.soave.cn/Images/OutliningIndicators/None.gifvar arr:Array= re.result as Array;
2http://www.soave.cn/Images/OutliningIndicators/None.gif lblResult.text = introduceMe(arr[0],arr[1],arr[2]);

posted on 2009-05-09 23:46  jinglikeblue  阅读(139)  评论(0)    收藏  举报

导航