gpt4 book ai didi

c# - 如何将 List 传递给服务引用(C#、VS2008)

转载 作者:太空狗 更新时间:2023-10-29 22:15:12 25 4
gpt4 key购买 nike

我遇到的问题是我已经创建了一个 Web 服务和一个 Windows 窗体(单独的解决方案)。我使用服务引用将 Web 服务添加到表单应用程序,我可以将“int”或“字符串”传递给 Web 服务没问题,但我无法传递 int 数组或列表 <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);
}
}
}

我得到的错误是:

Argument '1': cannot convert from 'System.Collections.Generic.List' to 'CalculateForm.CalculateService.ArrayOfInt'

我确信这很简单,当有人指出它时我会觉得很愚蠢 :)

干杯卡尔

最佳答案

WSDL 无法处理列表,因此它使用数组来代替,在将其传递到您的服务方法之前进行转换。在调用该方法之前,只需在您的 List 上调用 ToArray()。

关于c# - 如何将 List<int> 传递给服务引用(C#、VS2008),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2347530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com