几经周折搞定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端的自定义实体类型转换