質問です。

class A
class B : A
class C : A
class D : A

のような感じでAを継承するクラスがいつくかあったとき、Aの関数に

public A Copy()
{
return new BとかCとかD;
}

みたいな感じで、Aから自分が今なんのクラスなのかを見て
B・C・Dを生成することはできないのでしょうか?