2008-09-18 9 views
18

¿Cómo se organizan los métodos de extensión? Digo, si tuviera extensiones para la clase clase de objeto y la cadena que estoy tentado a separar estos métodos de extensión en clases IE:Organización de métodos de extensión

public class ObjectExtensions 
{ 
    ... 
} 

public class StringExtensions 
{ 
    ... 
} 

estoy efectuando esta demasiado complicado o ¿Esto tiene sentido?

Respuesta

12

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.

+0

Guau, bueno, me encontré con esta respuesta antes de crear mi primera clase de extensión. – Sung

3

Hay dos maneras que organizo los métodos de extensión que utilizo,

1) Si la extensión es específico para el proyecto en el que estoy trabajando, a continuación, la guardo en el mismo proyecto/montaje, pero en su propio espacio de nombres.

2) Si la extensión es de un tipo para que yo pueda o la esté usando también en otros proyectos, entonces 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 voy a utilizar? Organizarlos no es difícil si solo tengo esto en cuenta.

Cuestiones relacionadas