我收到此错误并确定如何修复它,我正在尝试创建一个从 Default1 继承的加载器类,然后在方法中使用它。
namespace MyLevel
{
class Default1
{
public interface Default1
{
IEnumerable<DefaultCore> GetDefaultValues();
}
}
}
任何帮助表示赞赏
我收到此错误并确定如何修复它,我正在尝试创建一个从 Default1 继承的加载器类,然后在方法中使用它。
namespace MyLevel
{
class Default1
{
public interface Default1
{
IEnumerable<DefaultCore> GetDefaultValues();
}
}
}
任何帮助表示赞赏
我认为您在这里对如何定义和/或实现接口感到困惑。
您所拥有的是一个名为 的类,Default1
它定义了一个名为 的内部嵌套接口Default1
。这样做存在三个问题:
你不能那样做;名称不能相同,因为这可能会使名称产生歧义。错误信息在这里很清楚。(正如其他人所说,接口通常被称为ISomething
,这解决了名称冲突。
该接口以一种奇怪的方式定义;它嵌套在一个内部(感谢@FishBasketGordo 提醒我!)类中。这意味着它仅在您定义它的程序集中可见,并且必须被引用为Default1.IDefault
(假设您修复了名称)。
没有任何东西真正实现你的接口,所以它没有在任何地方使用。
如果要定义接口,则不需要类:
namespace MyLevel
{
public interface IDefault
{
IEnumerable<DefaultCore> GetDefaultValues();
}
}
如果您希望您的类实现该接口:
namespace MyLevel
{
public class Default1 : IDefault
{
public IEnumerable<DefaultCore> GetDefaultValues() { }
}
}
因为你已经在类中定义了接口,所以它是类的成员,一个类不能有两个同名的成员,也不能有一个与类本身同名的成员。这就是错误消息所说的。
因此,更改Default1
(类)或Default1
(接口)的名称。
I
按照惯例,大多数接口都以大写为前缀,因此IDefault1
对于接口来说是一个不错的选择。另外,不相关的是,您为什么要在类中定义接口?
如果你想让类继承接口,它需要在类之外。其次,利用标准命名约定并在接口名称前加上一个I
(例如IDefault
、ICloneable
、IDisposable
等):
namespace MyLevel
{
public class Default : IDefault
{
}
public interface IDefault
{
IEnumerable<DefaultCore> GetDefaultValues();
}
}
您的代码未评估。
界面是(正常的)以I开头
不是构建的要求,但与 LAW 一样常见
就去 IDefault !
普拉桑特 :)