如何向WebServices中传送多个自定义类对象

lxw99 2006-03-29 05:45:57
~~~首先声明项目开发到这个地步不能使用DataSet 来传输了~~~
有一个订单表,下面有n多条明细数据,将每个明细数据映射为对象(ORM),现在向WebServices里面传,这么多个对象怎么传呢,一开始用Arraylist结果到了WebServices里面强行转换不回来。想用对象数组,但是我是先arraylist。add(对象)的,然后强行转换为对象数组提示转换无效。
想请问各位是怎么解决这个问题的
...全文
210 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
心情解码 2006-03-30
  • 打赏
  • 举报
回复
:)





-
Overriding 2006-03-30
  • 打赏
  • 举报
回复
[WebMethod]
public static Service GetService()
{
if (s == null)
s = new Service();
return s;
}
这一部分代码你不用关注,是我测试其他东西用的。
webservice部分只看HelloWorld.
Overriding 2006-03-30
  • 打赏
  • 举报
回复
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));

}
}
}
======================================
Eddie005 2006-03-29
  • 打赏
  • 举报
回复
这也是没办法的事,ArrayList就是这样的,即使你望里面添加的只不过是字符串,也没办法通过string[] tmp = (string[])myArraylist;一起转,唯一的办法只能是逐个取...
lxw99 2006-03-29
  • 打赏
  • 举报
回复
不可能一开就用对象数组的,因为我根本不知道,到底有多少个对象,所以无法定义纬度
Eddie005 2006-03-29
  • 打赏
  • 举报
回复
这种方法是可以的,但是取得时候要逐个进行类型转化,不能一块转

ArrayList tmp = .......;//接收
myclass a1 = tmp[0] as myclass;
myclass a2 = tmp[1] as myclass;
...

如果要一起转,那么一开始就应该用对象数组
myclass[] tmp = new myclass[10];
tmp[0] = new myclass();
....

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧