【发布时间】:2011-08-23 14:47:52
【问题描述】:
我正在尝试创建一个返回类实例的静态方法,例如:
class A {
public static A getInstance() {
return new A();
}
}
我遇到的问题是,如果我有一个从 A 派生的子类 B,我希望 B.getInstance() 返回 B 的实例,而不是 A。在 PHP 世界中,您可以使用关键字“self " 来引用你自己的类型,所以你的 getInstance() 看起来像:
public static function getInstance() {
return new self();
}
最好的方法是什么?
【问题讨论】:
-
我曾经做过的唯一方法是使用 CRTP 通过泛型将派生类型传递给基类型。这里不受欢迎,所以我不再讨论它。也许反射和
Activator.CreateInstance()是你最好的选择?
标签: c#