将多个整数发送到Web服务功能

时间:2012-03-07 09:59:21

标签: c# web-services sum

我有以下网络服务功能 -

    [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 :(得分:0)

您可以将签名更改为字符串而不是两个双打。

如果你在客户端解析双打的另一个选择是更改方法以接受params数组的双精度。

[OperationContract]
double Sum(params double[] myParams);

答案 1 :(得分:0)

如果您希望以您解释的方式处理它,那么您可以先.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);
 }

答案 2 :(得分:0)

如果它不是网络服务,您可以使用特殊关键字params,例如

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

但网络服务不知道params的含义,因此您需要使用List<double>double[]之类的内容,例如

public double Sum(List<double> items)
{
    return items.Sum();
}