>>956
動的にサブクラスを列挙するのはたぶん無理じゃないの?
public abstract class Animal
{
  public Animal(Animal a)
  {
  ...
  }
}
こういう風にAnimalのコンストラクタでthisを渡すことを強制しておけば
少なくともインスタンス化されたものは把握できるね。