~~~首先声明项目开发到这个地步不能使用DataSet 来传输了~~~
有一个订单表,下面有n多条明细数据,将每个明细数据映射为对象(ORM),现在向WebServices里面传,这么多个对象怎么传呢,一开始用Arraylist结果到了WebServices里面强行转换不回来。想用对象数组,但是我是先arraylist。add(对象)的,然后强行转换为对象数组提示转换无效。
想请问各位是怎么解决这个问题的

解决方案 »

  1.   

    这种方法是可以的,但是取得时候要逐个进行类型转化,不能一块转ArrayList tmp = .......;//接收
    myclass a1 = tmp[0] as myclass;
    myclass a2 = tmp[1] as myclass;
    ...如果要一起转,那么一开始就应该用对象数组
    myclass[] tmp = new myclass[10];
    tmp[0] = new myclass();
    ....
      

  2.   

    这也是没办法的事,ArrayList就是这样的,即使你望里面添加的只不过是字符串,也没办法通过string[] tmp = (string[])myArraylist;一起转,唯一的办法只能是逐个取...
      

  3.   

    webservice代码
    ===============================
    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Service : System.Web.Services.WebService
    {
        private static Service s = null;
        [WebMethod]
        public static Service GetService()
        {
            if (s == null)
                s = new Service();
            return s;
        }
       
        [WebMethod]
        public string HelloWorld(MyUser[] users) {
            string s = "";
            for (int i = 0; i < users.Length; i++)
            {
                s += users[i].Name;
                s += " ";
                s += users[i].Gender;
            }
            return s;    }
    }
    public class MyUser
    {
        public string Name;
        public string Gender;
    }
    ======================================测试代码:
    ======================================
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using Wss.localhost1;
    using System.Collections;
    namespace Wss
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
               
                ArrayList list = new ArrayList();            MyUser u = new MyUser();
                u.Name = "zz";
                u.Gender = "male";
                MyUser k = new MyUser();
                k.Name = "sss";
                k.Gender = "female";
                list.Add(u);
                list.Add(k);
                MyUser[] col = new MyUser[list.Count];
                col = (MyUser[])list.ToArray(typeof(MyUser));
               Service ss = new Service();           MessageBox.Show(ss.HelloWorld(col));
              
            }
        }
    }
    ======================================
      

  4.   

    [WebMethod]
        public static Service GetService()
        {
            if (s == null)
                s = new Service();
            return s;
        }
    这一部分代码你不用关注,是我测试其他东西用的。
    webservice部分只看HelloWorld.