Преобразование generic.list в ArrayOfInt для передачи через SOAP в веб-сервис - PullRequest
1 голос
/ 25 февраля 2010

Я пытаюсь передать общий список целых чисел из клиентского приложения в веб-службу с использованием протокола SOAP.

Когда я пытаюсь передать список в качестве параметра веб-методу, объявленному в веб-службе, я получаю сообщение об ошибке «невозможно преобразовать из 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 ]

3 голосов
/ 25 февраля 2010

SOAP не знает о списках и коллекциях, но понимает массивы.

Преобразование списка целых чисел в массив целых чисел:

int[] intArr = myList.ToArray();

И вместо этого передайте это.

Обновление:

Похоже, веб-служба ожидает WFCalculate.WSCalculate.ArrayOfInt, поэтому вам нужно преобразовать свой список в этот и передать его до конца.

Не тестировалось:

WFCalculate.WSCalculate.ArrayOfInt myClientArray = (WFCalculate.WSCalculate.ArrayOfInt)myList.ToArray();
int _result = client.CalculateListSum(myClientArray);
0 голосов
/ 01 марта 2010

Эй, Абс, подумал, что ты мог бы проверить мой пост , так как я думаю, что у нас точно такая же проблема ... (вероятно, та же курсовая работа, смеется), и мне удалось ее решить

...