title: Abstract UserControl inheritance in Visual Studio designer
body: <pre><code>abstract class CustomControl : UserControl 
  {
      protected abstract int DoStuff();
  }
  
  class DetailControl : CustomControl
  {
      protected override int DoStuff()
      { 
          // do stuff
          return result;
      }
  }
  </code></pre>
  
  <p>I dropped a DetailControl in a form. It renders correctly at runtime, but the designer displays an error and won't open because the base user control is abstract.</p>
  
  <p>For the moment, I'm contemplating the following patch, which seems pretty wrong to me, as I want the child classes to be forced to implement the method.</p>
  
  <pre><code>class CustomControl : UserControl 
  {
      protected virtual int DoStuff()
      {
          throw new InvalidOperationException("This method must be overriden.");
      }
  }
  
  class DetailControl : CustomControl
  {
      protected override int DoStuff()
      { 
          // do stuff
          return result;
      }
  }
  </code></pre>
  
  <p>Anyone has a better idea on how to work my way around this problem?</p>