0

課題に取り組んでいますが、理解できないこのエラーが発生します。動作するサービス用のWCFクライアントを作成しています。誰かがここで私を助けることができますか?

この行はエラーをスローしています:

MyComplex sumcplx = proxy.complex_sum(one,two);

エラーが発生します

エラー:「NETProxyWCFClient.ProxyTypes.CalculatorClient.complex_sum(NETProxyWCFClient.ProxyTpes.MyComplex、NETProxyWCFClient.ProxyTpes.MyComplex)」に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります

私のプログラムへのコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
using System.ServiceModel.Description;

namespace NETProxyWCFClient
{
    [DataContract]
    public class MyComplex
    {
        int real;
        [DataMember]
        public int Real
        {
            get { return real; }
            set { real = value; }
        }
        [DataMember]
        int im;
        public int Im
        {
            get { return im; }
            set { im = value; }
        }

    }
    [ServiceContract]
    interface ICalculator
    {
        [OperationContract]
        int mult(int a, int b);

        [OperationContract]
        List<int> fib(int n);

        [OperationContract]
        MyComplex complex_sum(MyComplex a, MyComplex b);
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter in 2 numbers");
            string read = Console.ReadLine();
            string[] numbers = read.Split(' ');
            int m = int.Parse(numbers[0]);
            int n = int.Parse(numbers[1]);

            ProxyTypes.CalculatorClient proxy = new ProxyTypes.CalculatorClient();


            //Multiplcation
            int sum = proxy.mult(m, n);
            Console.WriteLine(sum.ToString());


            //Mycomplex
            MyComplex one = new MyComplex();
            one.Im = m;
            one.Real = n;

            MyComplex two = new MyComplex();
            two.Im = n;
            two.Real = m;

            MyComplex sumcplx = proxy.complex_sum(one,two);
            Console.WriteLine(sumcplx.Im + " , " + sumcplx.Real);

            //fib one
            int[] listM = proxy.fib(m);
            foreach (int listItem in listM)
            {
                Console.Write(listItem.ToString() + " ");
            }
            Console.WriteLine("");

            //fib 2
            int[] listN = proxy.fib(n);
            foreach (int listItem in listN)
            {
                Console.Write(listItem.ToString() + " ");
            }

            Console.ReadLine();




        }
    }
}
4

1 に答える 1

2

テストプログラムにサービス参照を追加した場合は、生成されるproxtクラスがあるため、ICalculatorを明示的に定義している場合(作成したコード)はそれを削除します。これは、プロジェクトのNETProxyWCFClient.ProxyTpes.MyComplex、NETProxyWCFClient.ProxyTpes名前空間の下に既にあります。

于 2012-06-03T00:54:23.643 に答える