可访问性不一致:参数类型的可访问性低于使用 WCF MEX 的方法

本文关键字:访问 WCF 方法 于使用 MEX 类型 不一致 参数 | 更新日期: 2023-09-27 18:36:02

我正在处理作业,但收到此错误:

错误 1 可访问性不一致:参数类型"MexWcfService.MyComplex"比方法"MexWcfService.Calculator.complex_sum(MexWcfService.MyComplex, MexWcfService.MyComplex)"更难访问 E:''North Central College''CSC615''lab8''MexWcfService''MexWcfService''Program.cs 75 26 MexWcfService

下面是我的代码。我的问题发生在 .. 的接口实现类内。public 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();

        }
    }
}

可访问性不一致:参数类型的可访问性低于使用 WCF MEX 的方法

您需要将类 'MyComplex' 声明为公共类,因为您已在类计算器的公共方法中使用了该类型。

我在

将值作为参数传递时遇到了类似的问题。我使参数类型的访问说明符与方法访问说明符相同。