2011-03-29 8 views
5

Tengo un proyecto que utiliza muchas constantes globales. Finalmente, estoy planeando extraer algunas partes del programa y crear ensamblajes propios.Mover constantes a un ensamblaje separado

¿Vale la pena (o es posible?) Crear un ensamblado para constantes globales solo (p. Ej., GlobalConstants.dll), para que pueda usar este ensamblaje en futuros ensamblajes?

Este método me ayudará a hacer menos codificación, y puedo mantener el mismo nombre para las constantes en todos los proyectos.

Respuesta

4

¿En cuántos proyectos espera que sean útiles las mismas constantes? Si hay genuinamente una caja para él, entonces bien; de lo contrario ... no.

Por supuesto, si tiene con la misma probabilidad de ser reutilizado biblioteca de utilidades, entonces podría tener sentido allí, siempre y cuando se delimite apropiadamente por espacio de nombres y tipo.

Personalmente, hasta que tuve un real, concreto propósito al moverlos, los dejaría en paz.

11

Si bien es posible hacerlo y tal vez incluso una muy buena idea, debe tener en cuenta el hecho de que el compilador de C# trata las constantes como valores y no como referencias.

Con esto quiero decir que el compilador de C# reemplazar todas las instancias de la constante en que código y reemplazar la "variable" con el valor.

Esto significa que incluso si actualiza el ensamblaje GlobalConstants.dll y lo copia a una de las aplicaciones que tiene, necesitará volver a compilar esa aplicación. De lo contrario, la aplicación utilizará los valores constantes anteriores.

Para superar este problema, puede simplemente usar public static readonly en lugar de public const como modificador readonly difiere de la const en que es tratado por el compilador de C# como referencia en el código en lugar de un valor.

1

Una razón para crear un conjunto de constantes separado sería permitir actualizaciones "menos complejas" como mensajes de error y localizaciones donde puede actualizar el ensamblaje como una revisión y reducir el riesgo de romper cualquier otra cosa.

En general, cuando encontramos que compartir constantes es útil tener un ensamblaje de capa de entidad empresarial que contiene constantes globales, ya que las entidades comerciales son la única capa en nuestro arco. a la que se puede acceder mediante (la mayoría de las capas).

Tener un ensamblaje separado provoca gastos generales, y dependiendo de las constantes que tenga, puede tener algunos que dependen directamente de la funcionalidad, por ej. una clave que puede usarse para encontrar un valor en una Hashtable.

Cuestiones relacionadas