代码之家  ›  专栏  ›  技术社区  ›  user189327

从不实现接口的类访问接口?

  •  0
  • user189327  · 技术社区  · 15 年前

    我有一个接口, IFindable 这是由几个类实现的。另一个 World 类持有 List<IFindable> items;

    我在 世界 类,返回ifindables的列表。现在,我正在尝试从我的 Default.aspx.cs 类(这是一个Web项目)。不幸的是,我似乎不能,因为这门课不明白什么是ifindable。我得到以下错误:

    Inconsistent accessibility: return type
    'System.Collections.Generic.List<IFindable>' is less accessible than
    method 'World.getItems()'
    

    为什么会这样?我做错了吗?

    4 回复  |  直到 15 年前
        1
  •  7
  •   Bob    15 年前

    听起来像你的 IFindable 接口不是公共的,请将其更改为

    public interface IFindable ...
    

    如果您当前的声明如下

    interface IFindable ...
    

    然后编译器将使用默认的内部可访问性

    接口和类一样,可以声明为公共类型或内部类型。与类不同,接口默认为内部访问。接口成员始终是公共的,不能应用访问修饰符。 http://msdn.microsoft.com/en-us/library/ms173121%28VS.80%29.aspx

        2
  •  2
  •   Mongus Pong    15 年前

    您是否将接口定义为公共接口?

    public interface IFindable 
    {
    ...
    }
    
        3
  •  2
  •   Jon Skeet    15 年前

    其他人建议公开您的界面。另一种选择是 getItems() 方法内部:

    internal List<IFindable> getItems()
    {
        ...
    }
    

    (当你在做的时候,我建议你要么去做 GetItems() 或者一个被称为 Items ,以便遵循.NET约定。 Ge() 非常像Java。

        4
  •  0
  •   Joel Martinez    15 年前

    您可能还需要将using语句放到类文件顶部的正确命名空间中。