Inconsistent Accessibility: Parameter type is less accessible than method with WCF MEX

14,706

You need to declare the class 'MyComplex' as public, as you have used the type in a public method in the class Calculator.

Share:
14,706
user975044
Author by

user975044

Updated on June 05, 2022

Comments

  • user975044
    user975044 almost 2 years

    I Am working on an assignment and I get this error:

    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

    Below is my code. My issue occurs inside the interface implementation class at ..public MyComplex complex_sum(MyComplex a, MyComplex b)...

    Can some one help me out here. I am pretty new to C# let alone WCF with Metadata Exchange Endpoints. Any pointers would be greatly appreciated.

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