Dev (Back & Front)ARTIGO

Criando Sections Customizados

Olá, pessoal!

Neste artigo, veremos como criar novas sections customizadas. Até o momento, a solução foi testada no Visual Studio .NET 2010 e 2005 e funcionou perfeitamente. Acredito que funcione nas outras versões sem qualquer problema.

Usado para desenvolvimento:

  • Visual Studio .NET 2010
  • Linguagem C#.NET
  • Web.config

O primeiro passo foi gerar a o website ou o projeto do tipo web. Dependendo da forma que gerar, será necessário inserir alguns dados a mais no web.config da aplicação. Com base neste artigo, você pode criar várias outras formas de desenvolvimento e customização de sectionConfigurations.

O segundo passo foi gerar uma classe .cs para configuração do arquivo. Criei a classe CustomConfiguration.cs.

Importes necessários:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

É necessário estender a classe ConfigurationSection.

public class CustomConfiguration : ConfigurationSection
{}

O passo seguinte foi gerar duas propriedades dentro do arquivo de configuração. Os dois artigos são do tipo Int32.

    // First Number Property
    [ConfigurationProperty("firstNumber", DefaultValue=1, IsRequired=true)]
    [IntegerValidator(MinValue=-100, MaxValue=100)]
    public Int32 FirstNumber
    {
        get
        { return (Int32)this["firstNumber"]; }
        set
        { this["firstNumber"] = value; }
    }

    // Second Number Property
    [ConfigurationProperty("secondNumber", DefaultValue=1, IsRequired=true)]
    [IntegerValidator(MinValue=-100, MaxValue=100)]
    public Int32 SecondNumber
    {
        get
        { return (Int32)this["secondNumber"]; }
        set
        { this["secondNumber"] = value; }
    }

Gerei o construtor recebendo dois parâmetros de entrada. Um construtor vazio e outro recebendo parâmetro.

// Construtor vazio
    public CustomConfiguration()
    {
    }


   // Construtor recebendo parâmetros
    public CustomConfiguration (Int32 firstValue, Int32 secondValue)
    {
        FirstNumber = firstValue;
        SecondNumber = secondValue;
    }

O próximo passo é gerar dentro do arquivo web.config as configurações customizadas. Dentro da tag <configuration> existe <configSections> responsável para configuração da sectionGroup.

<sectionGroup name="customSection">
   <section name="settings" type="CustomConfiguration" allowLocation="true" allowDefinition="Everywhere" />
</sectionGroup>

Note que o tipo (type) é o mesmo nome da classe de configuração. O nome (name) settings é o nome que escolhi para gerar a segunda tag customizada. Se a sua aplicação estiver usando namespace, basta colocar no tipo todo o namespace até a classe.

<sectionGroup name="customSection">
   <section
name="settings" type="MinhaAplicacao.Classe.Util,CustomConfiguration"
allowLocation="true" allowDefinition="Everywhere" />
</sectionGroup>

Depois de fechar a tag </configSections>, é necessário inserir a outra customizada com os valores e as duas propriedades.

<customSection>
 <settings firstNumber="20"secondNumber="43" />
</customSection>

Note que a sessão customizada possui os mesmos nomes colocados na primeira tag. O nome customSection foi gerado na segunda tag XML e assim por diante. As duas propriedades firstNumber e secondNumber possuem valores do tipo inteiro na segunda tag XML adicionada.

<configSections>
  <sectionGroup name="customSection">
   
<section name="settings" type="
MinhaAplicacao.Classe.Util.CustomConfiguration, MinhaAplicacao"
allowLocation="true" allowDefinition="Everywhere" />
  </sectionGroup>
</configSections>

Dessa maneira, a classe de leitura foi feita e o arquivo config gerado, basta agora mostrar como é feita a leitura desses valores. Para ler o arquivo, basta colocar o código abaixo:

CustomConfiguration config = (CustomConfiguration)System.Configuration.ConfigurationManager.GetSection("customSection/settings");

Essa linha de código pode ser colocada no seu Page_Load sem qualquer problema.

O GetSection(“customSection/settings”); busca diretamente as tags com esse nome. Fica simples, depois basta pegar as propriedades.

Colocando a instância e ponto aparece o nome da propriedade.

Int32 primeiro = config.FirstNumber 
Int32 segundo = config.SecondNumber

Somando os valores, veja o resultado:

Até a próxima!

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil