2012-06-03 3 views
0

과제를 진행 중이며 이해가 안되는 오류가 발생합니다. 나는 작동중인 서비스를위한 WCF 클라이언트를 작성 중이다. 누구든지 나를 도울 수 있습니까? 당신이 당신의 테스트 프로그램에 서비스 참조를 추가 한 경우WCF 클라이언트에서 잘 모르겠다 오류가 발생합니다.

Error: The best overloaded method match for 'NETProxyWCFClient.ProxyTypes.CalculatorClient.complex_sum(NETProxyWCFClient.ProxyTpes.MyComplex,NETProxyWCFClient.ProxyTpes.MyComplex)' has some invalid arguments

코드 내 프로그램

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(); 




     } 
    } 
} 
+0

이 코드가 모두 하나의 프로젝트에 포함되어 있는지 여부는 코드에서 100 % 명확하지 않습니다. WCF 프로젝트와 콘솔 EXE라는 두 개의 프로젝트가 있습니까? 그렇지 않은 경우 : vars 1과 2의 감속도에서 네임 스페이스로 완전 자격을 얻으십시오. HTH –

+0

이것은 클라이언트를위한 코드입니다 ... 제가 작성한 서비스도 똑같은 클래스와 인터페이스를 가지고 있습니다 .. 두 콘솔 프로젝트 – user975044

+0

테스트 프로그램에 서비스 참조를 추가했다면 다음과 같은 proxt 클래스가 있습니다. 생성됩니다. ICalculator에서 명시 적으로 정의 된 코드 (작성한 코드)를 제거합니다. NETProxyWCFClient.ProxyTpes.MyComplex, NETProxyWCFClient.ProxyTpes 네임 스페이스 아래에 이미 프로젝트에 있습니다. –

답변

2

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

가 오류 내가 얻을 :

이 줄은 오류를 던지고있다 , 당신을 위해 생성되는 proxt 클래스가있다. 그래서 ICalculator가 명시 적으로 정의 되었다면 (코드 쓴다) 그것을 제거하십시오. NETProxyWCFClient.ProxyTpes.MyComplex, NETProxyWCFClient.ProxyTpes 네임 스페이스 아래에 이미 프로젝트에 있습니다.

관련 문제