Отправить несколько целых чисел в функцию веб-службы - PullRequest
0 голосов
/ 07 марта 2012

У меня есть следующая функция веб-службы -

    [ServiceContract]
public interface ITest
{
    [OperationContract]
    double Sum(double a, double b);

}
public class Test : ITest
{
    public double Sum(double a, double b)
    {
        double answer = a + b;
        return answer;
    }

И я реализую это, используя это -

        double a = double.Parse(textBox1.Text);
        double b = double.Parse(textBox2.Text);
        double sum = sc.Sum(a, b);

Моя проблема в том, что это обрабатывает только два двойных числа, как я могу заставить его обрабатывать несколько из одного текстового поля, то есть 1,2,3,4 с ответом 10?

Ответы [ 3 ]

0 голосов
/ 07 марта 2012

Если вы хотите, чтобы он обрабатывался так, как вы объяснили, тогда вы можете сначала .Split() текст текстового поля

string[] numbers = textBox1.Text.Split(',');

Теперь, когда они разделены, конвертировать их в двойные числа

double[] doubleNumbers = new double[numbers.Count];
int counter = 0;
foreach(string s in numbers)
{
    doubleNumbers[counter++] = Double.Parse(s);
}

Тогда просто отправьте его в вашу функцию сумм

 Sum(doubleNumbers);

 private static void Sum(params double[] list)
 {
     double sum = 0;
     foreach (double number in list)
     {
         sum += number;
     }
     Console.WriteLine(sum);
 }
0 голосов
/ 07 марта 2012

Если бы это был не веб-сервис, вы могли бы использовать специальное ключевое слово params, например

public double Sum(params double[] items)
{
    //do sum
    return answer;
}

Но веб-службы не знают, что означает params, поэтому вам нужно использовать что-то вроде List<double> или double[], например,

public double Sum(List<double> items)
{
    return items.Sum();
}
0 голосов
/ 07 марта 2012

Вы можете изменить подпись, чтобы взять строку вместо двух двойных.

Другой вариант, если вы анализируете double на стороне клиента, - это изменить метод для принятия массива params из double.

[OperationContract]
double Sum(params double[] myParams);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...