Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是代码。
public class EData { public static EData All(){ return null; } } public class EHouse : EData { }
我不希望函数 All in class EHousereturnEData但 return EHouse。
EHouse
EData
EHouse.All()应该返回一种 EHouse 类型,而无需在派生类中编码任何额外内容。
EHouse.All()
好吧,您可以使用自引用泛型,但有时会导致问题。但是你会得到这样的东西:
public class EData<T> where T : EData<T> { public static T All(){ return null; } } public class EHouse : EData<EHouse> { }
使用如下:
EHouse all = EHouse.All();
但不确定这是否违反了您“不必在派生类中编写任何内容”的约束,因为它会稍微更改其继承声明。
您可以尝试具有泛型类型参数的 EData:
public class EData<T> { public static T All() { return (T) ..... } } public class EHouse : EData<EHouse> { }