====== Modelo de Configuración ====== =====¿Que es?===== Es un mecanismo que nos ofrece DotNet para realizar configuraciones en nuestras aplicaciones. =====¿Como se usa?===== Primero tenemos que agregar una referencia al ensamblado **System.Configuration**, después de agregar dicha referencia existen varias formas de utilizarlos dependiendo de la configuración que deseemos utilizar, por ejemplo: **Para leer una cadena de conexión** System.Configuration.ConfigurationManager.ConnectionStrings["nombreConexion"] **Para leer una llave de aplicación** System.Configuration.ConfigurationManager.AppSettings["nombreLlave"] **Para leer una configuracion personalizada** var cfg = (MiConfiguracion)System.Configuration.ConfigurationManager.GetSection("nombreMiConfiguracion"); =====¿Como funciona?===== Para empezar, la configuración de DotNet funciona como una herencia y todo empieza en el machine.config. {{ cap:dotnet:config:dotnet_config.png }} El //machine.config// es el archivo de mayor jerarquía en las configuraciones, este hereda a los //web.config// y a los //app.config//, en entornos web se usa el //web.config//, en las aplicaciones de escritorio se usa el //app.config//. Existen configuraciones que pueden ser sobre-escritas, es decir, que una vez que se definieron pueden ser alteradas en sus herencias, pero existen otras configuraciones que no pueden ser sobre-escritas, es decir, una vez que se definieron su valor se mantiene durante toda la herencia. Existe una carpeta llamada **Config** donde está el archivo //machine.config// y este hereda sus valores al archivo //web.config// que está en la misma carpeta, este archivo hereda su configuración al archivo //web.config// que se encuentra en cada sitio, y el archivo //web.config// de cada sitio hereda su configuración al archivo //web.config// de cada aplicación web, por último, cada archivo //web.config// de cada aplicación puede heredar su configuración a los archivos //web.config// de cada carpeta en la aplicación. =====¿Como se define una configuración personalizada?===== La configuración personalizada se define en 2 partes. - En el código - En el archivo de configuración ====En el código==== * Se tiene que crear una clase y hacer que esta clase implemente la interface //IConfigurationSectionHandler//. * En el método **create** escribir el código necesario para leer el contenido XML de la configuración y pasarla a la entidad o entidades necesarias. public class MiConfiguracion : IConfigurationSectionHandler { public object Create(object parent, object configContext, XmlNode section) { //Leer XmlNode section para obtener los valores de la configuracion } } ====En el archivo de configuración==== * Agregar en la sección **configuration/configSections** la referencia a nuestra clase de configuración. * Agregar en la sección **configuration** el contenido xml que define la configuración de nuestra clase de configuración * Podemos trasladar el contenido a un archivo por medio del atributo //configSource//. **Opción 1**
**Opción 2**