Organización de métodos de extensión

¿Cómo organizas tus métodos de extensión? Digamos que si tuviera extensiones para la clase de objeto y la clase de cadena, estoy tentado de separar estos métodos de extensión en clases IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

¿Estoy haciendo esto demasiado complicado o tiene sentido?

0
agregado
Puntos de vista: 1

2 Respuestas

Hay dos formas en que organizo los métodos de extensión que uso,

1) Si la extensión es específica para el proyecto en el que estoy trabajando, entonces lo mantengo en el mismo proyecto/ensamblado, pero en su propio espacio de nombres.

2) Si la extensión es de un tipo para que yo pueda usarla en otros proyectos también, los separé en un conjunto común para extensiones.

Lo más importante a tener en cuenta es, ¿cuál es el alcance en el que los usaré? Organizarlos no es difícil si solo tengo esto en cuenta.

0
agregado

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.

Dentro de la Asamblea 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 esta:

  • Framework (namespace)
    • Framework.ObjectExtensions (class)
    • Framework.StringExtensions (class)
    • Framework.Web (namespace)
      • Framework.Web.HttpApplicationExtensions (class)

El beneficio es que, desde una perspectiva de mantenimiento, es muy fácil encontrar más adelante los métodos de extensión para un tipo dado.

0
agregado
Wow, es bueno que me encontré con esta respuesta antes de crear mi primera clase de extensión.
agregado el autor Sung, fuente