我正在尝试编写方法:
public Table<ParentType> GetTableFromContext() {
//return a table of type Table<ChildType>
}
是的,我可以使用Generics来解决这个问题:
public Table<T> GetTableFromContext<T>() where T : ParentType {
//return a table of type Table<T>
}
但我不愿意。 (然后我必须在所有基类中使用泛型)
是否有解决方案来引用具有较少特定类型的表?
答案 0 :(得分:1)
据我所知,你的问题是“我想返回几种类型之一,但我不想要复杂的继承”。如果是这样,那么您的解决方案就是标记界面
public interface ITable {}
返回类型
可以实现(没有界面成员,非常简单)public class ChildType1 : ITable
此外,界面可用于在您的实体上强制执行通用结构(如果它们有任何实体)(最常见的示例可能是Id属性)
答案 1 :(得分:1)
您可以在协变的帮助下解决此问题,但在这种情况下,您应该使用接口ITable
而不是类Table
作为方法的返回类型:< / p>
public interface ITable<out T>
{}
public class Table<T> : ITable<T>
{}
public ITable<ParentType> GetTableFromContext() {
return new Table<ChildType>();
}