2011-10-20 9 views
5

Tengo curiosidad por saber a qué "capa" del sistema pertenecen las extensiones comunes que son globales para la aplicación. Por ejemplo, puedo tener extensiones que me permitan usar los tipos Rails como "DaysAgo", "MonthsAgo", etc. del método de extensión en enteros. ¿A qué nivel de proyecto suele pertenecer este proyecto? Estaba pensando en Infraestructura, pero eso parece significar relacionado con la base de datos (por ejemplo, repositorios base y acceso a datos). Tengo un proyecto de biblioteca "Core", ¿entonces quizás pertenece allí?¿En qué capa de un proyecto pertenecen los métodos de extensión comunes?

Entiendo que desea agrupar extensiones que están relacionadas con un grupo específico de clases, pero estas se usan esencialmente en toda la aplicación. En los días previos a los métodos de extensión, estarían en una clase estática Utilities o similar, entonces, ¿dónde deberían vivir ahora?

Respuesta

2

Usted puede (mejor) crear múltiples proyectos de infraestructura basados ​​en alcance por ejemplo:

Infrastructure.Common (aquí viene la infraestructura general - mejor ajuste para los métodos de extensión) Infrastructure.Data (Data Access) Infrastrcuture. bla bla bla

2

Pondré estos métodos en la capa más baja posible donde existan esos objetos/entidades.

ya sea en las interfaces, o en las entidades o en un conjunto de núcleo, la más baja la mejor por lo que todas las capas superiores puede utilizarlo :)

0

considerar poner lógica que está fuera del alcance de toda la aplicación en su montaje propio o ensambles.

2

Me gustaría ponerlos en un proyecto base (algo así como 'Core') que se hace referencia de todos los otros proyectos. Si comienza un nuevo proyecto en algún momento, puede reutilizar estos métodos de extensión fácilmente.

Pensaría en los espacios de nombres que usará para sus diferentes conjuntos de métodos de extensión. Si algunos realmente pertenecen a Data, simplemente colóquelos en un espacio de nombres Core.Data para que su código en otros proyectos no se llene de métodos de extensión que no tengan ningún significado en ese contexto.

Cuestiones relacionadas