这是代码。
public class EData {
public static EData All(){
return null;
}
}
public class EHouse : EData {
}
我不希望类EHouse
中的函数All返回EData
,但返回EHouse
。
EHouse.All()
应返回一种类型的EHouse,而不在派生类中编写任何额外的内容。
答案 0 :(得分:5)
好吧,您可以使用Self Referencing Generics,但有时可以cause issues。但你得到这样的东西:
public class EData<T> where T : EData<T>
{
public static T All(){
return null;
}
}
public class EHouse : EData<EHouse>
{
}
使用方式如下:
EHouse all = EHouse.All();
但不确定这是否违反了“不必在派生类中编写任何代码”的约束,因为它稍微改变了它的继承声明。
答案 1 :(得分:1)
您可以尝试使用具有泛型类型参数的EData:
public class EData<T>
{
public static T All()
{ return (T) ..... }
}
public class EHouse : EData<EHouse> { }