是否可以创建必须返回派生类的实例的抽象方法?我可以做这个:
abstract class Base
{
public abstract Base GetObj();
}
class Derived : Base
{
public Derived() { }
public override Base GetObj()
{
return new Derived();
}
}
但是我想知道是否有一种方法可以强制
Derived::GetObj()
返回Derived
吗?谢谢。
最佳答案
使用泛型应该可以实现以下目的:
abstract class Base<T>
where T : Base<T>
{
public abstract T GetObj();
}
class Derived : Base <Derived>
{
public Derived() { }
public override Derived GetObj()
{
return new Derived();
}
}
您甚至可以进一步简化此操作(如果所有派生实例都是使用默认构造函数创建的):
abstract class Base<T>
where T : Base<T>, new()
{
public static T GetObj()
{
return new T();
}
}
class Derived : Base<Derived>
{
public Derived() { }
}
关于c# - 返回派生类的实例的抽象方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9361401/