c#中的接口引用问题
本文关键字:引用 问题 接口 | 更新日期: 2023-09-27 18:23:54
我正在尝试学习接口,但遇到了这个问题。。
我有三个图书馆。。
-
calculateLibrary论点.cs,计算器.cs,计算器Main.cs,commandTypes.cs,inputParser.cs,setInput.cs
-
接口库Iarguments.cs,Icalculator.cs,IcalculatorMain.cs,IinputParser.cs,IsetInput.cs
-
打字脚本(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
}
}
我认为问题不在于参考。。因为我的一些接口工作正常。。我的意思是没有错误。。我看到了一些相关的帖子,但这些对我没有帮助。
谢谢。
由于IinputParser
和inputParser
都需要使用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
,并在InterfaceLibrary的public commandTypes parseCommand(string command)
中的IinputParser
接口中使用了它,然后您想从ComputerLibrary引用InterfaceLibrary。
命令类型(CalculateLibrary)->IinputParser(InterfaceLibrary)->inputParser(CalculateLibrary)
您应该将接口使用的这些类放在InterfaceLibrary中,或者在较低级别的库中将它们声明为类似Core的类,然后从InterfaceLibrary和CalculateLibrary