我的问题是我已经创建了一个Web服务和一个Windows表单(单独的解决方案)。我使用服务引用将Web服务添加到表单应用程序中,我可以向Web服务传递'int'或'string'没有问题,但我不能传递一个int数组或List <int
>
Web服务代码如下:
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web.Services;
namespace CalculateService
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public int CalcluateSum(List<int> listInt)
{
int sum = listInt.Sum();
return sum;
}
}
}
字符串
客户端代码为:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CalculateForm
{
public partial class FormCalculate : Form
{
List<int> intArray = new List<int>();
public FormCalculate()
{
InitializeComponent();
}
private void btnAddNum_Click(object sender, EventArgs e)
{
intArray.Add(Convert.ToInt32(txtAddNum.Text));
txtAddNum.Clear();
listBoxAddNum.Items.Clear();
for (int i = 0; i < intArray.Count; i++)
{
listBoxAddNum.Items.Add(intArray[i]);
}
}
private void btnCalculate_Click(object sender, EventArgs e)
{
CalculateForm.CalculateService.Service1SoapClient client = new CalculateForm.CalculateService.Service1SoapClient();
int result = client.CalcluateSum(intArray);
txtResult.Text = Convert.ToString(result);
}
}
}
型
我得到的错误是:
参数“% 1”:无法从“System.Collections.Generic.List”转换为“CalculateForm.CalculateService.ArrayOfInt”
我相信这是一个简单的东西,当有人指出它时,我会感到愚蠢:)
干杯卡尔
6条答案
按热度按时间l7mqbcuq1#
WSDL不能处理List,所以它使用了一个Array,在传递到服务方法之前先进行转换。在调用方法之前,只需在List上调用ToArray()。
cgvd09ve2#
我终于让它工作了!!:)
我设法让它传递**
List<int>
,而不是使用ToArray()
**方法。下面是客户端代码:
字符串
Web服务代码:
型
所以基本上我所要做的就是在客户端创建一个
CalculateService.ArrayOfInt
的新示例,并添加来自List<int> listInt
的数据范围,然后将arrayOfInt
传递给Web服务。谢谢大家的帮助,我很快就会回来的:)
ct3nt3jp3#
我是用WCE3.0的扩展名做的,当你生成
reference.cs
文件的时候,系统把int[]
替换成List<int>
,你必须把int[]
替换成reference.cs
文件里的List<int>
。祝你好运
o7jaxewo4#
试试这个:
字符串
r1zhe5dt5#
这个问题看起来类似于this one。我认为你需要写一个快速的静态函数,它接受一个List并执行一个类型转换到CalculateForm.CalculateService.ArrayOfInt。你的web服务已经生成了这个类型,我不熟悉这种行为,因为我经常在Web服务之间传递Lists,而我的Web服务总是设法执行conversion .ToArray()。
bqf10yzr6#
这是我为我的游戏设计的。它不允许我施放或者尝试各种各样的东西。但是创建和插入分开的工作很好。
字符串