【发布时间】:2013-04-23 18:46:38
【问题描述】:
我对泛型(即T)在 C# 中的工作方式感到困惑。除非我弄错了,否则它的行为似乎与 C++ 不同。我正在尝试为数据网关创建一个简单的接口:
编辑已更新以匹配答案。 Visual Studio 现在抱怨派生类没有实现接口方法。
public interface IDataGateway<T>
{
void InsertRow(T row);
void UpdateRow(T row);
IEnumerable<T> GetTable();
}
public class LibraryGateway : IDataGateway<Media>
{
public void InsertRow(Media item) { }
public void Updaterow(Media item) { }
public IEnumerable<Media> GetTable() { }
}
我不知道会传递什么类型,这就是我尝试使用泛型的原因。
【问题讨论】:
-
试试
public class LibraryGateway : IDataGateway<Media> -
VS 抱怨使用带有类型参数的非泛型类型 IDataGateway。
-
您是否正在尝试创建一个不知道实现者使用的类型的接口,或者您想使用泛型类型来实现?
-
是的,阅读所有答案我一定混淆了通用的范围。通用的接口似乎合乎逻辑!
-
我认为有两个可能的原因:首先,你的类实现中有一个带有小写 r 的“Updaterow”——大小写不匹配可能是导致它失败的原因。其次,就像我在回答中所说的那样,我认为您的
GetTable()方法的定义有点偏离 - 您的界面中有GetTable(T table),但从您的类中的实现来看,看起来您没有t 实际上希望它接受任何参数。