2012-06-01 56 views
2

我在做作業不太容易接近,我得到這個錯誤:可訪問性不一致:參數類型不是方法與WCF MEX

Error 1 Inconsistent accessibility: parameter type 'MexWcfService.MyComplex' is less accessible than method 'MexWcfService.Calculator.complex_sum(MexWcfService.MyComplex, MexWcfService.MyComplex)' E:\North Central College\CSC615\lab8\MexWcfService\MexWcfService\Program.cs 75 26 MexWcfService

下面是我的代碼。我的問題發生在..公共MyComplex complex_sum(MyComplex a,MyComplex b)的接口實現類中...

有人可以幫我解決這個問題。我對C#很陌生,更不用說帶有元數據交換端點的WCF了。任何指針將不勝感激。

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

namespace MexWcfService 
{ 
    [DataContract] 
    class MyComplex 
    { 
     int real; 
     int im; 
     public MyComplex(int real, int im) 
     { 
      Real = real; 
      Im = im; 
     } 

     [DataMember] 
     public int Real 
     { 
      get { return real; } 
      set { real = value; } 
     } 
     [DataMember] 
     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); 
    } 

    public class Calculator : ICalculator 
    { 

     public int mult(int a, int b) 
     { 
      int total = (a * b); 
      return total; 
     } 
     public List<int> fib(int n) 
     { 
      List<int> list = new List<int>(); 
      for (int i = 0; i < n; i++) 
      { 
       int a = 0; 
       int b = 1; 
       for (int q = 0; q < i; q++) 
       { 
        int temp = a; 
        a = b; 
        b = temp + b; 
       } 
       list.Add(a); 
      } 

      return list; 
     } 
     public MyComplex complex_sum(MyComplex a, MyComplex b) 
     { 
      int real = (a.Real + b.Real); 
      int im = (a.Im + b.Im); 

      MyComplex complex = new MyComplex(real, im); 
      return complex; 
     } 

    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      ServiceHost host = new ServiceHost(typeof(Calculator), new Uri("http://localhost:50000/Math")); 
      host.AddServiceEndpoint(typeof(Calculator), new BasicHttpBinding(), "mult"); 
      ServiceMetadataBehavior bhv = new ServiceMetadataBehavior(); 
      bhv.HttpGetEnabled = true; 
      host.Description.Behaviors.Add(bhv); 
      host.Open(); 
      Console.ReadLine(); 


     } 
    } 
} 

回答

7

您需要將類MyComplex聲明爲public,因爲您已經在類Calculator中使用公共方法中的類型。

+0

非常感謝,工作! – user975044

0

我有類似的問題,而傳遞值作爲參數。我使參數類型的訪問說明符與方法訪問說明符相同。

+1

你可以發表一些代碼來表達你的行動..? – NirMH

相關問題