title: How to detect if virtual method is overridden in c#
body: <p>Is it possible to determine if a virtual method has been overridden:</p>
  
  <pre><code>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();
    }
  }
  </code></pre>
  
  <p>I realize that this example seems stupid (e.g. why don't you just call DoSomethingExtra() since it doesn't do anything).  I assure you I have a legitimate case for this.  Any ideas?</p>