2011-07-03 7 views
8

En mi aplicación (C#) tengo muchos mensajes const que se imprimen en el registro, se presentan al usuario, etc. No se supone que estos mensajes const cambien tan no tiene sentido ponerlos en un archivo externo o DB. Mi solución es muy simple: estoy pensando en crear una clase estática y nombrarla ConstMessages. Esta clase contendrá simplemente muchas variables de cadena pública const a las que se puede acceder desde cualquier lugar de la aplicación. ¿Puede sugerir si hay algún problema con ese método y si hay formas mejores? Gracias!Práctica recomendada para almacenar cadenas de comandos de aplicaciones en el código

+1

Usted está buscando una solución no recomendado; debe usar un archivo externo (como el archivo de configuración '.app' o' .config') para almacenar estos mensajes. –

+1

¿Por qué ponerlos en una clase si estas cadenas no cambian? Parece que esperas algún cambio para ellos. –

Respuesta

6

yo usaría sólo lectura en lugar de const para superar los problemas de versiones.

+0

Versiones de versiones usando const? ¿Cómo es eso? – Alxandr

+1

Const son tiempo de compilación mientras que readonly es tiempo de ejecución. Más información aquí http://www.shrinkrays.net/code-snippets/csharp/const-vs-readonly-in-csharp.aspx – anivas

+8

@Alxandr: si utiliza constantes en un ensamblado que se reutilizan en varios lugares dentro del código , se vería forzado a recompilar todo el código de cliente que utiliza el ensamblado porque el compilador codificaría el valor. Con un valor de solo lectura, el valor se resuelve en tiempo de ejecución. Entonces, simplemente al conectar una nueva versión del ensamblaje, el código del cliente usará el nuevo valor. Hay un buen capítulo sobre este tema en este libro: http://www.amazon.com/Effective-Covers-4-0-Specific-Development/dp/0321658701/ref=sr_1_1?ie=UTF8&qid=1309707290&sr=8-1 (Capítulo 1: Artículo 2: Prefiero leerlo solo a const) –

4

Eso es por lo general bien para aplicaciones sencillas - Otra opción es un resx si le parece que es una posibilidad alguna vez tendrá que ser localizada/admita más de un idioma de la aplicación.

Cuestiones relacionadas