En nuestro día a día como desarrolladores, raro es el caso en el que no nos enfrentamos a una aplicación o a un módulo en el que tenemos que leer un fichero de configuración. Hay varias técnicas para su tratamiento, como el guardar sus datos en una clase estática, en un singletón, etc., el caso es que los valores del fichero de configuración estén accesibles en todo el proyecto. Esto no es una norma escrita, pero suele ser muy común.
Con el objetivo de hacer más liviana la lectura de los
settings del fichero App.Config, hemos desarrollado una librería capaz de hacer
esta tarea automáticamente, sin que tengamos que preocuparnos por ello. Su uso
es muy sencillo y nos hará olvidarnos de la clase ConfiguartionManager y del
ensamblado System.Configuration en muy poco tiempo.
Este desarrollo tiene un fuerte contenido de Dynamic.
App.Config Autoreader, forma parte de un proyecto Open
Source llamado MoralesLarios.Development y que lo tenéis disponible en GitHub
en el siguiente Link.
Índice
- Descripción de Autoreader
- Instalación y uso
- Ventajas e inconvenientes
- Tipos de transformaciones de datos
- Valores Strings
- Valores Numéricos
- Valores Fecha y Fecha/Hora (Dates DateTimes)
- Valores Booleanos
- Tipos de Arrays
- Forzar a valores Strings
- Salvando caracteres especiales.
Descripción de Autoreader
La acción de lectura automática del fichero App.Config,
consiste en primer paso de la lectura de las claves (keys) de la parte del
fichero de Settings, en segundo paso de la transformación de esas claves a
variables de sus respectivos tipos y de la creación una clase de resultado con
el contenido de esos valores como paso final.
Ejemplo sin definición de tipo.
El proceso de transformación de la clave del valor del
fichero de configuración a una variable fuertemente tipada.
Nuestra clase Config, es la encargada de exponer el valor
fuertemente tipado mediante una propiedad de tipo Dynamic.
Instalación y uso
1.- Descargaremos el paquete de
Nuget MoralesLarios.Development.
Install-Package
MoralesLarios.Development
2.- Añadiremos un nuevo Setting
al fichero app.config.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <appSettings> <add key="FilterDate" value="01/01/2018"/> </appSettings> </configuration>
3.- Añadiremos un nuevo using a
la clase consumidora.
using MoralesLarios.Development.Configuration;
4.- Crearemos una nueva variable
para almacenar el valor de nuestra clave de app.config settings y llamaremos a
nuestra clase Config.ConfigNodes.[app.config_keyName].
static void Main(string[] args) { DateTime filterDate = Config.ConfigNodes.FilterDate; }
Todo el
código.
using MoralesLarios.Development.Configuration; using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { DateTime filterDate = Config.ConfigNodes.FilterDate; } } }
La ejecución lee una variable de tipo DateTime.
Ventajas e inconvenientes
Estas son las ventajas e inconvenientes de la utilidad
Autoreader App.Config:
PROS.
- Lectura rápida
- Transformación rápida
- Fácil uso y comprensión del proceso
- Añades una nueva clave en el settings del fichero app.config y ya la tienes disponible para usar en código.
CONS.
- Los valores de las claves están expuestos en valores de tipo Dynamic por lo que se pierde el intellisense.
Tipos de transformación de Autoreader
La utilidad Autoreader puede transformar los valores a los
siguientes tipos:
- Stirngs
- Numerics
- Dates and DateTimes
- Bools
- Array of
- Strings Arrays
- Numerics Arrays
- DateTimes Arrays
- Bools Arrays
Ahora explicaremos más en profundidad cada uno de ellos.
Valores Strings
Es el proceso más simple de transformación ya que los
valores de las claves del fichero app.config
ya son de tipo string, así que simplemente pasa su contenido.
Valores Numéricos
El proceso para los valores numéricos, es muy similar al de
los tipos strings, con la diferencia que para los tipos numéricos el valor
leído de la clave se castea a el tipo decimal.
Hemos decidido escoger el tipo decimal, ya que este cumple
todas las necesidades de los tipos numéricos en general (short, int,
double, etc).
Valores Date
and DateTime
En esta ocasión, el valor string de las claves de fichero
App.Config serán transformadas a una variable de tipo string.
DATE
DATETIME
Valores
Booleanos
Igual que en los casos anteriores, pero para tipo bool.
Arrays values
El proceso de transformación para collecciones (Arrays), es
muy similiar al de los tipos simples. La lectura inicial será igual, pero el
proceso verificará que el contenido de la clave posea caracteres con el valor ‘;’
(punto y coma), esto le servirá como separador de valores y partirá en trozos
su volumen.
Esta regla es válida para todos los tipos de arrays.
Este es el
resultado:
Forzar valores a tipo String
En caso puede sernos de gran ayuda el poder forzar la
lectura de valores a tipo string, deshabilitando su transformación a tipos
fuertemente tipados. Podríamos tener la necesidad de leer valores de tipo
(numérico, fechas o booleanos) como valores de tipo cadena.
Para este caso utilizaremos ‘’ (comilla simple) al comienzo
y al fin del valor de la clave, para forzar a un valor string.
Valor de la
variable.
Salvando caracteres especiales
Si queremos leer valores de caracteres especiales del fichero
de configuración ( ; o ‘’), y que estos pierdan sus capacidades
extraordinarias y simplemente sean un valor más de la cadena de caracteres,
tendremos que usar ‘\’ (backslash)
precediendo al carácter que deseamos despojar sus poderes.
Ejemplo:
No hay comentarios :
Publicar un comentario