c#中的接口引用问题

本文关键字:引用 问题 接口 | 更新日期: 2023-09-27 18:23:54

我正在尝试学习接口,但遇到了这个问题。。

我有三个图书馆。。

  1. calculateLibrary论点.cs,计算器.cs,计算器Main.cs,commandTypes.cs,inputParser.cs,setInput.cs

  2. 接口库Iarguments.cs,Icalculator.cs,IcalculatorMain.cs,IinputParser.cs,IsetInput.cs

  3. 打字脚本(web)index.aspx

所以我的问题是我的一些接口方法不起作用,或者它说"找不到类型或命名空间名称"commandTypes(你是缺少using指令还是程序集引用?)

IinputParser中的commandTypes就是错误指向的。

我的接口的代码

    namespace calculateLibrary
{
    public interface IinputParser
    {
        commandTypes parseCommand(string command);
    }
}

以及继承接口的方法的代码

    namespace calculateLibrary
{
    public class inputParser : IinputParser
    {
        public commandTypes parseCommand(string command)
        {
            return ((commandTypes)Enum.Parse(typeof(commandTypes), command));
        }
    }
}

这是我的commandType类的代码

namespace calculateLibrary
{
    public enum commandTypes
    {
        add,
        sub,
        mul,
        div
    }
}

我认为问题不在于参考。。因为我的一些接口工作正常。。我的意思是没有错误。。我看到了一些相关的帖子,但这些对我没有帮助。

谢谢。

c#中的接口引用问题

由于IinputParserinputParser都需要使用commandTypes,我建议将commandTypes.cs移动到InterfacesLibrary项目,以避免循环引用。命名空间也需要更改。以下是commandTypes的代码在移动到InterfacesLibrary项目后的样子:

namespace InterfacesLibrary
{
    public enum commandTypes
    {
        add,
        sub,
        mul,
        div
    }
}

IinputParser的代码应该将InterfacesLibrary作为名称空间

namespace InterfacesLibrary
{
    public interface IinputParser
    {
        commandTypes parseCommand(string command);
    }
}

这是inputParser类的代码:

using InterfacesLibrary;
namespace calculateLibrary
{
    public class inputParser : IinputParser
    {
        public commandTypes parseCommand(string command)
        {
            return ((commandTypes)Enum.Parse(typeof(commandTypes), command));
        }
    }
}

问题似乎是循环引用,因为您在CalculateLibrary中声明了commandTypes,并在InterfaceLibrarypublic commandTypes parseCommand(string command)中的IinputParser接口中使用了它,然后您想从ComputerLibrary引用InterfaceLibrary

命令类型(CalculateLibrary)->IinputParser(InterfaceLibrary)->inputParser(CalculateLibrary)

您应该将接口使用的这些类放在InterfaceLibrary中,或者在较低级别的库中将它们声明为类似Core的类,然后从InterfaceLibraryCalculateLibrary

中引用它