title: How to Implement a Base Class with a Method and yet force the Derived Class to Override it?
body: <p>Having something like this this :</p>
  
  <pre><code>public abstract class AAA
  {
    protected abstract virtual string ToString()    // Error
    {
      // Base Stuff
    }
  }
  
  public abstract class BBB : AAA
  {
    public override string ToString()
    {
      // Use base.ToString();
      // More Stuff
    }
  }
  </code></pre>
  
  <p>I read another post (<a href="https://stackoverflow.com/questions/613327/abstract-method-in-a-virtual-class">abstract method in a virtual class</a>) witch was pretty like my question, but there is a little difference. I'd like AAA.ToString() to have a base behavior <strong>and</strong> force the derived class to override it. </p>
  
  <p>I know I could do something like this (scroll down) but I was looking for a proper way.</p>
  
  <pre><code>public abstract class AAA
  {
    public abstract string ToString();
    protected string ToString2()
    {
      // Base Stuff
    }
  }
  
  public class BBB : AAA
  {
    public override string ToString()
    {
      // Use base.ToString2();
      // More Stuff
    }
  }
  </code></pre>
  
  <p>I could also probably make a IAAA interface and build my BBB class like</p>
  
  <pre><code>public class BBB : AAA, IAAA { ... }
  </code></pre>
  
  <p>but don't look right to me.</p>