Minor tweaks to this guideline to line up with what is, I believe, common practice already..

As always questions, comments and annotations to me, and the full guidelines can be found here:  http://www.gotdotnet.com/team/libraries

---------- 

*      It is recommended that you provide customization through protected  (family) methods.

The public interface of a base class should provide a rich set of functionality for the consumer of that class.  However, customizers of that class often want to implement the fewest methods possible to provide that rich set of functionality to the consumer.  To meet this goal, provide a set of non-virtual or final public methods that call through to a single (or very small set of) protected (family) method with the “Core” suffix that provides implementations for such a method.

public Control{
   //…
   public void SetBounds(int x, int y, int width, int height){

      …
      SetBoundsCore (…);
   }
  

   public void SetBounds(int x, int y, int width, int  

   height, BoundsSpecified specified){

       …
       SetBoundsCore (…);
   }

   protected virtual void SetBoundsCore(int x, int y, int width, int

      height, BoundsSpecified specified){
         // Do the real work here.
      }
   }

Annotation (BradA): Notice in a few parts of the Framework v1.0 we used the suffix “Impl” for this convention.  In retrospect “Core” is more common and is not an abbreviation, so we choice to standardize on it.