public abstract class A
{
// constructors omitted
public abstract A Create(SomeData data);
}
public class B : A
{
// constructors omitted
public override A Create(SomeData data)
{
return new B(data);
}
}
我想要的是能够使Create
方法静态,这样我就可以得到一个 B 的实例,而不必用一个空的构造函数创建一个无用的实例。(如果您想知道为什么, A 实际上是 form 的泛型类型A<TFoo, TBar>
,其中TBar
对应于派生类型。众所周知,您不能使用带有任何参数的构造函数来实例化泛型类型。)
我已经知道静态方法与对象层次结构分离,仅依赖于类型的名称。这意味着我不能Create
作为一种抽象方法来强制所有后代实现。还有另一种方法可以实现这种模式吗?