c#通过WCF将arraylist从客户端传递到服务器端

时间:2013-10-31 12:47:09

标签: c# wcf generics arraylist

我正在使用c#/。net 3.5。第一次使用WCF,我有2个项目作为后端WCF项目:

namespace WcfService1
{
    [ServiceContract]
    public interface ICalculationService
    {

    [OperationContract]
    Int32 add(ArrayList arr);

    [OperationContract]
    Int32 mean(ArrayList arr);

}

}

namespace WcfService1
{
    public class CalculationService : ICalculationService
    {

  public Int32 add(ArrayList arr)
        {
            Int32 total = 0;
            Int32 sum = Convert.ToInt32(arr);
            foreach (int i in arr)
            {
                total += i;
            }

            return total;
        }

        public Int32 mean(ArrayList arr)
        {
            Int32 total = 0;
            foreach (int i in arr) 
            {
                total += i;
            }
            total = total / arr.Count;
            return total;
        }

    }
}

此后端执行简单的数学计算,值在前端生成。

和前端GUI(Windows窗体应用程序)。

public partial class Form1 : Form
    {
        ArrayList arr = new ArrayList();
        List<Int32> Mylist = new List<Int32>();
        public Form1()
        {
            InitializeComponent();
        }

private void button1_Click_1(object sender, EventArgs e)
        {   //Generating the Arraylist

            string lista = txtArray.Text;
            string[] array = lista.Split(',');

            int length = array.Length;

            for(int i=0; i< length; i++)
            {
                Int32 value = Convert.ToInt32(arr[i]);
                Mylist .Add(value);
                result.Text += arr[i];
            }

        }


        private void button1_Click(object sender, EventArgs e)
        {
            CalculationServiceClient client = new CalculationServiceClient();
            Int32 result = client.add(arr);

        }

    }
}

第一个按钮单击使用逗号分隔值生成ArrayList。第二个按钮单击应该从服务器端调用该方法。

我在最后一行收到错误Int32 result = client.add(arr);错误是'无法将类型Arraylist转换为类型对象[]'我尝试过使用泛型,我也遇到了同样的问题。

1 个答案:

答案 0 :(得分:0)

生成服务引用时,应将CollectionType设置为System.Collections.Arraylist - 它位于UI的高级部分中。它默认为传递数组。

这里有更多信息:http://msdn.microsoft.com/en-us/library/aa347850(v=vs.90).aspx