是否可以创建一个必须返回派生类实例的抽象方法?我可以这样做:
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/