我正在尝试使用SOAP协议将一个通用的整数列表从客户端应用程序传递给Web服务。
当我尝试将列表作为参数传递给Web服务中声明的Web方法时,我收到错误“无法从generic.list转换为ArrayOfInt”。
我该如何解决这个问题?
// web service method
[WebMethod(CacheDuration = 30, Description = "Returns the calculated sum value of all numbers supplied in the list")]
public int CalculateListSum(int[] list)
{
int _sum = 0;
foreach (int _val in list)
{
_sum += _val;
}
return _sum;
}
// client app buton click event
private void btnRun_Click(object sender, EventArgs e)
{
string str = this.tbValues.Text;
// clear the list
ClearIntList();
// take the textbox input, format and add to the List
PopulateIntList(str);
WSCalculate.CalculateSoapClient client = new WSCalculate.CalculateSoapClient();
int[] _int_array = this._int_list.ToArray();
// the line below is generating the error
int _result = client.CalculateListSum(_int_array);
this.tbResult.Text = _result.ToString();
}
错误1最佳重载方法 匹配 'WFCalculate.WSCalculate.CalculateSoapClient.CalculateListSum(WFCalculate.WSCalculate.ArrayOfInt)' 有一些无效的 参数WFCalculate \ Form1.cs 58 27 WFCalculate
错误2参数'1':无法转换 从'int []'到 'WFCalculate.WSCalculate.ArrayOfInt'WFCalculate \ Form1.cs 58 51 WFCalculate
答案 0 :(得分:3)
SOAP不了解列表和集合,但理解数组。
将整数列表转换为整数数组:
int[] intArr = myList.ToArray();
然后通过它。
<强>更新强>
看起来网络服务期待WFCalculate.WSCalculate.ArrayOfInt
,因此您需要将列表转换为该列表并将其传递过来。
未经测试:
WFCalculate.WSCalculate.ArrayOfInt myClientArray = (WFCalculate.WSCalculate.ArrayOfInt)myList.ToArray();
int _result = client.CalculateListSum(myClientArray);
答案 1 :(得分:0)
嘿Abs,以为你可能想查看我的post 因为我认为我们有完全相同的问题......(可能是相同的课程大声笑)我设法解决了它