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

时间:2009-10-22 13:24:43

标签: c# asp.net interface

我有一个由几个类实现的接口IFindable。另一个World类包含List<IFindable> items;

我在World类中设置了一个getItems方法,以返回IFindables列表。现在,我试图从我的Default.aspx.cs类(这是一个Web项目)访问该列表。不幸的是,我似乎无法,因为这个类不明白IFindable是什么。我收到以下错误:

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

这是为什么?我错了吗?

4 个答案:

答案 0 :(得分:7)

听起来您的IFindable界面不公开,请将其更改为

public interface IFindable ...

如果您当前的声明如下:

interface IFindable ...

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

  

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

答案 1 :(得分:2)

您是否已将界面定义为公开?

public interface IFindable 
{
...
}

答案 2 :(得分:2)

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

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

(当你在它的时候,我建议你制作它GetItems()或一个名为Items的属性,以遵循.NET约定。getItems()非常类似于Java 。)

答案 3 :(得分:0)

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