我有一个用C#编写的应用程序。我的应用有一个如下所示的类:在C#中使用泛型接口#
public class FinderA
{
public IEnumerable<FinderA> GetItems()
{
return FinderA.FindAll();
}
}
我想要求其他类做类似的事情。我不能使用基类,因为我的实际实现已经在使用基类。出于这个原因,我想创建一个接口。目前,我尝试以下:
public interface IFinder
{
IEnumerable<T> GetItems();
}
当我使用这种方法,我得到的是说,一个编译时错误:“类型或命名空间名称‘T’找不到(是否缺少。 ..“为了克服这个问题,我想补充<T>
到接口名称的末尾,以便它看起来像这样:
public interface IFinder<T>
{
IEnumerable<T> GetItems();
}
这反过来又产生另一种说,编译时错误:”使用泛型类型“IFinder '需要1个类型参数'“我的挑战是,我希望接口是通用的,我不想传入一个类型,有没有办法解决这个问题呢?如果是这样,什么/如何?
请求没有任何意义......你不想传入一个类型,但你希望接口是通用的。如果你的界面是通用的,那意味着你必须传入一个类型。 –
@TimothyShields他希望推断它;具体而言,他希望泛型参数始终是实现接口的类型。至少,这就是它的样子。当然,C#中没有这样的功能。 – Servy
一个猜测,根据你如何定义FinderA:'public interface IFinder {IEnumerable GetItems(); }' –
ASh