几经周折搞定flex as自定义类到 .net c#的转换。
以进销存销售开单为例,这是一个典型的主明细表实体类,我是把主表类和明细表类做成一个类。然后在flex as3端传送到.net端
我用的配置是flex as3 + EF(Asp.Net Entity Framework) c# + FluorineFx 组合
销售开单我做了一个类,
FLEX端:
order_list.as
其中包括两个成员
public var AccoutListVO:ArrayCollection; //销售明细单用一数组
public var ordersVO:TgetXskdOrder;//销售主表
传给amf用的是object
//传递Order主明细表
public function addorder(ro:order_list):void{
_service.addOrder.send(ro);
}
以下是order_list.as源码
package vo
{
import mx.collections.ArrayCollection;
import mx.collections.IList;
//这行没有用因为到c#的格式[RemoteClass(alias="posService.vo.order_list")] //试了几种方式,发现都无法映射到cs类。最后决定自己绑定。
[Bindable]
public class order_list
{
public var AccoutListVO:ArrayCollection;//明细表
public var ordersVO:TgetXskdOrder;//主表
public function order_list():void{
}
}
}
//传送方法
protected function addOrder_clickHandler(event:MouseEvent):void
{
var ro:order_list=new order_list();
ro.ordersVO.S_E_NAME="tt";
ro.ordersVO.S_O_DATE="2010-1-1";
var ro1:TgetXskdOrder=new TgetXskdOrder();
ro1=ro.ordersVO;
var myArray:ArrayCollection=new ArrayCollection();
myArray.addItem(new AccoutListVO());
myArray.addItem(new AccoutListVO());
myArray.addItem(new AccoutListVO());
myArray.addItem(new AccoutListVO());
ro.AccoutListVO=myArray ;
dbControl.addorder(ro);
}
C#端
//建一销售单类 orderlist.cs
Orderlist.cs
public class orderlist
{
public Orders orders;//销售单主表
public IList<AccoutList> accoutList;//销售单明细表
public orderlist(ASObject obj)
{
// untypedList.OfType<T>().ToList();
//转换flex传过来的Order主表。
this.orders = obj["ordersVO"] as Orders;
//转换FluorineFx.AMF3.ArrayCollection 到Ilist<T>很麻烦,查了很多资料才找到,最后在msdn上才找到答案IList to IList<T> http://social.msdn.microsoft.com/Forums/zh-CN/netfxbcl/thread/8c22d5db-8bf3-4dda-9db1-dc0ca3bb9cb4
this.accoutList = (obj["AccoutListVO"] as IList).OfType<AccoutList>().ToList();
}
}
服务调用的方法
public bool addOrder(ASObject obj)
{
orderlist obj1 = new orderlist(obj);
return true;
}
至此.net端成功转换flex端传过来的复杂自定义类。
下次更新.net到flex as3端的自定义实体类型转换
网络推广 网站运营 网站开发 DDV的茶餐厅 http://www.dplayer.net/ , http://www.dplayer.net/post/94.html