基类中的泛型是否可以在父类中指定
本文关键字:父类 泛型 是否 基类 | 更新日期: 2023-09-27 18:33:36
我有一个基类,它有在 C# 中使用泛型类型的方法,然后我有其他从这些类继承的类,我想在父类中指定类型以避免到处都是尖括号......
这是我的基类 CBaseHome 中的一个示例方法
public List<T> fetchAll<T>(CBaseDb db, bool includeEmpty = true) where T : CBaseTable, new()
{
List<T> retVal = new List<T>();
...
return retVal;
}
我有一个继承自此类的父类(不覆盖此函数)
在然后使用它的类中,我有以下代码...
List<student> students = new limxpoDB.Home.student().fetchAll<student>(db, false);
所以这里的Home.student类继承了CBaseHome类,而学生继承了CBaseTable...
我希望能够在 Home.student 类中说该类唯一有效的泛型类型是 student,以便我的使用代码看起来像......
List<student> students = new limxpoDB.Home.student().fetchAll(db, false);
我意识到这里的差异很小,但我也在一些 VB>Net 代码中使用此库,它看起来很糟糕......
有什么想法吗?
谢谢
子类不能对方法施加泛型类型参数。 所以如果我有:
public class Parent {
public List<T> GetStuff<T>() { ... }
}
我不能做:
public class Child : Parent {
// This is not legal, and there is no legal equivalent.
public List<ChildStuff> GetStuff<ChildStuff>() { ... }
}
你可以做的是使父类泛型,而不是它的方法:
public class Parent<T> {
public List<T> GetStuff() { ... }
}
public class Child : Parent<ChildStuff> {
// GetStuff for Child now automatically returns List<ChildStuff>
}