Можно ли определить, был ли переопределен виртуальный метод:
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(), поскольку он ничего не делает). Уверяю вас, у меня есть законное дело. Любые идеи?