我有一个由几个类实现的接口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()'
这是为什么?我错了吗?
答案 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语句放在类文件顶部的正确命名空间