0

我收到此错误并确定如何修复它,我正在尝试创建一个从 Default1 继承的加载器类,然后在方法中使用它。

namespace MyLevel
{
    class Default1
    {
        public interface Default1
        {
            IEnumerable<DefaultCore> GetDefaultValues();
        }
    }
}

任何帮助表示赞赏

4

4 回答 4

3

我认为您在这里对如何定义和/或实现接口感到困惑。

您所拥有的是一个名为 的类,Default1它定义了一个名为 的内部嵌套接口Default1。这样做存在三个问题:

  1. 你不能那样做;名称不能相同,因为这可能会使名称产生歧义。错误信息在这里很清楚。(正如其他人所说,接口通常被称为ISomething,这解决了名称冲突。

  2. 该接口以一种奇怪的方式定义;它嵌套在一个内部(感谢@FishBasketGordo 提醒我!)类中。这意味着它仅在您定义它的程序集中可见,并且必须被引用为Default1.IDefault(假设您修复了名称)。

  3. 没有任何东西真正实现你的接口,所以它没有在任何地方使用。

如果要定义接口,则不需要类:

namespace MyLevel
{
    public interface IDefault
    {
        IEnumerable<DefaultCore> GetDefaultValues();
    }
}

如果您希望您的类实现该接口:

namespace MyLevel
{
    public class Default1 : IDefault
    {
        public IEnumerable<DefaultCore> GetDefaultValues() { }
    }
}
于 2012-05-03T21:46:22.110 回答
1

因为你已经在类中定义了接口,所以它是类的成员,一个类不能有两个同名的成员,也不能有一个与类本身同名的成员。这就是错误消息所说的。

因此,更改Default1(类)或Default1(接口)的名称。

I按照惯例,大多数接口都以大写为前缀,因此IDefault1对于接口来说是一个不错的选择。另外,不相关的是,您为什么要在类中定义接口?

于 2012-05-03T21:42:45.263 回答
1

如果你想让类继承接口,它需要在类之外。其次,利用标准命名约定并在接口名称前加上一个I(例如IDefaultICloneableIDisposable等):

namespace MyLevel
{
    public class Default : IDefault
    {

    }

    public interface IDefault
    {
        IEnumerable<DefaultCore> GetDefaultValues();            
    }
}
于 2012-05-03T21:47:48.197 回答
-1

您的代码未评估。

界面是(正常的)以I开头

不是构建的要求,但与 LAW 一样常见

就去 IDefault !

普拉桑特 :)

于 2012-05-03T21:45:02.847 回答