将generic.list转换为ArrayOfInt,以便通过SOAP传输到Web服务

时间:2010-02-25 14:35:24

标签: c# wcf generics soap asmx

我正在尝试使用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

2 个答案:

答案 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 因为我认为我们有完全相同的问题......(可能是相同的课程大声笑)我设法解决了它