Можно ли определить, был ли переопределен виртуальный метод:
class ABase {
  public void DoSomething(object p)
  {
    p.Process();
    if( /* DoSomethingExtra is implemented */ )
      DoSomethingExtra(p);
  }
  public virtual void DoSomethingExtra(object p) { }
}
class ADerived {
  public override void DoSomethingExtra(object p)
  {
    p.ProcessMore();
  }
}
Я понимаю, что этот пример кажется глупым (например, почему бы вам просто не вызвать DoSomethingExtra(), поскольку он ничего не делает). Уверяю вас, у меня есть законное дело. Любые идеи?