.NET y configuraciones – Parte 1

Hace unos días 0Gis0 publicó un buen artículo sobre el archivo de configuración en .Net y como crear nuestras propias secciones personalizadas. Bien, he decidido ahondar un “poco” más en el asunto aprovechando el hecho que tengo prometido a un par de amigos desde hace ratos que publicaría acerca de configuración en .Net, es buena idea que antes le den una rápida leída al artículo que en cuestión.

Recapitulando lo que nos menciona nuestra compañera, es sencillo crear una sección personalizada de configuración en .Net, basta solamente de heredar de la clase ConfigurationSection y listo. Bueno, no tan rápido, hay un par de cosas de hacer notar, la sección personalizada de configuración debe exponer propiedades que se mapean a las opciones de configuración, estas propiedades deben estar “adornados” con los atributos ConfigurationProperty y obligatoriamente debemos indicar a que atributo de la sección de configuración a la cual se mapea. A partir de esto usamos el indexer de la clase base y la casteamos al tipo que necesitamos.

public class SimpleConfigurationSection : ConfigurationSection {

    [ConfigurationProperty("port")]
    public int Port {
       get {
           return (int) this["port"];
       }
       set {
           this["port"] = value;
       }
    }
}

Esto correspondería a algo así en el archivo de configuración

<configSections>
    <section name="smtp" type="SimpleConfigurationSection, MyAssembly" />
</configSections>
<smtp port="25">

Simple y sencillo, de igual manera podemos indicar si el elemento es requerido y también el valor por defecto de la propiedad con simplemente modificar un poco el atributo

public class SimpleConfigurationSection : ConfigurationSection {

    [ConfigurationProperty("port", DefaultValue = 80, IsRequired = true)]
    public int Port {
       get {
           return (int) this["port"];
       }
       set {
           this["port"] = value;
       }
    }
}

Simple y sencillo, como lo menciona nuestra amiga. Con esto como base podemos acceder la configuración de forma simple

var config = (SimpleConfigurationSection) ConfigurationManager.GetSection("smtp");
var port = config.Port;

Con esto como base estamos listos para profundizar un poco más en el asunto. En la próxima entrega veremos como definir jerarquías de configuración en nuestras secciones personalizadas.

Saludos!

UPDATE: otros post de la serie han sido publicados

This entry was posted in asp.net, development and tagged , , , . Bookmark the permalink.