2

c#/.net 3.5 を使用しています。初めて WCF を使用するとき、バックエンド WCF プロジェクトの 2 つのプロジェクトがあります。

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 が生成されます。2 回目のボタン クリックは、サーバー側からメソッドを呼び出すことになっています。

最後の行でエラーが発生しました Int32 result = client.add(arr); 'Can't convert type Arraylist to type object[]' というエラー ジェネリックを使用してみましたが、同じ問題が発生します。

4

1 に答える 1

0

Service 参照を生成するときは、CollectionType を System.Collections.Arraylist に設定する必要があります。これは、UI の詳細セクションにあります。デフォルトでは、配列を渡します。

詳細はこちら: http://msdn.microsoft.com/en-us/library/aa347850(v=vs.90).aspx

于 2013-10-31T13:14:42.627 に答える