Organizo métodos de extensión usando una combinación de espacio de nombres y nombre de clase, y es similar a la forma en que describes en la pregunta.
Generalmente tengo algún tipo de "ensamblaje primario" en mi solución que proporciona la mayoría de la funcionalidad compartida (como los métodos de extensión). Llamaremos a esta asamblea "Marco" por el bien de la discusión.
En el ensamblado de Framework, trato de imitar los espacios de nombres de las cosas para las que tengo métodos de extensión. Por ejemplo, si extiendo System.Web.HttpApplication, tendría un espacio de nombres "Framework.Web". Clases como "Cadena" y "Objeto", que están en el espacio de nombres "Sistema", se traducen al espacio de nombres raíz "Marco" en ese ensamblaje.
Finalmente, nombrar sigue las líneas que ha especificado en la pregunta - el nombre del tipo con "Extensiones" como sufijo. Esto produce una jerarquía de clases como esto:
- Marco (espacio de nombres)
- Framework.ObjectExtensions (clase)
- Framework.StringExtensions (clase)
- Framework.Web (espacio de nombres)
- Framework.Web.HttpApplicationExtensions (clase)
La ventaja es que, desde el punto de vista del mantenimiento, que es muy fácil después para ir a buscar a los métodos de extensión para un tipo dado.
Guau, bueno, me encontré con esta respuesta antes de crear mi primera clase de extensión. – Sung