Naming conventions for abstract classes
In Framework Design Guidelines p 174 states:
Avoid naming base classes with a "Base" suffix if the class is intended for use in public APIs.
Also : http://blogs.msdn.com/kcwalina/archive/2005/12/16/BaseSuffix.aspx
I don't remember such a guideline. I believe you should use the naming that makes sense. Sometimes the abstract class is only designed to provide common functionality to some classes (as a tool), which I think should have the suffix. However, in some cases, you want to use it as the base of a polymorphism hierarchy which it's not complete itself. In those cases I suggest naming like a normal class.
As you see, you won't probably declare a method that accepts a ButtonBase as parameter. It's designed to provide minimal functionality for subclasses. However, you might treat a ConfigurationElement
as an entity that has different forms but it is not complete on itself (and hence it's abstract)
Also, if the abstract class has a few static members that will be used, the 'Base' can get ugly.