C# - Lendo o arquivo de configuração


Neste artigo veremos como ler e obter informações do arquivo de configuração App.Config em aplicações usando a linguagem C#.

O arquivo de configuração App.Config permite armazenar informações do aplicativo de forma dinâmica. As configurações permitem que você armazene informações no computador cliente que não devem ser incluídas no código do aplicativo (por exemplo, uma cadeia de conexão), preferências do usuário e outras informações necessárias em tempo de execução.

Cada configuração de aplicativo deve ter um nome exclusivo. O nome pode ser qualquer combinação de letras, números ou um sublinhado que não comece com um número e não pode ter espaços. O nome é alterado através da propriedade Name

Existem diferentes maneiras de definir os valores dentro do arquivo de configuração e ler seus valores, que são baseados nas chaves definidas. Definimos esses valores dentro de seção de configuração.

Vejamos a seguir 3 formas de acessar e ler informações do arquivo App.Config.

Como exemplo eu vou criar uma aplicação C# do tipo Console chamada DemoConfig no VS 2017 Community.

Após criar o projeto temos que incluir a referência ao assembly System.Configuration para poder acessar a classe ConfigurationManager.

Clique sobre o projeto com o mouse e selecione Add -> Refeence, em Assemblies selecione: System.Configuration

1- Lendo informações de configuração em AppSettings

Podemos incluir informações de configurações no arquivo App.Config em uma seção chamada <appSettings> dentro da seção <Configuration>.

Como exemplo vamos incluir informações para Login, Senha e Email, para isso incluimos a informação para Key definindo o nome o valor para value.

Abaixo temos o exemplo definido no arquivo App.Config :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
    </startup>
  <appSettings>  
    <add key="Login" value="Macoratti"/>  
    <add key="Senha" value="abracadabra"/>
    <add key="Email" value="macoratti@yahoo.com"/>
  </appSettings> 
</configuration>

Para acessar os valores definidos podemos usar a propriedade ConfigurationManager.AppSettings da seguinte forma:

O resultado é visto a seguir:

2- Lendo informações de configuração dentro de uma seção de App.Config

Vamos supor agora que o arquivo App.Config possua configurações definidas dentro de seções no arquivo.

Vamos criar uma seção personalizada dentro do arquivo App.Config definindo uma seção chamada <ConfigSections> e nesta seção definir o nome da seção ApplicationSettings onde vamos definir valores de configuração da aplicação :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>  
    <section name="ApplicationSettings" type="System.Configuration.NameValueSectionHandler"/>      
  </configSections>      
  <ApplicationSettings>  
    <add key="Aplicacao" value="DemoConfig"/>  
    <add key="Autor" value="Macoratti"/>  
    <add key="Linguagem" value="CSharp"/>  
  </ApplicationSettings>  
   <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
   </startup>
</configuration>

Para acessar as configurações da seção personalizada, primeiro precisamos descobrir a seção, usando o método GetSection, que é definido dentro da classe ConfigurationManager e converter o valor de retorno como NameValueCollection. Esta coleção esta no namespace using System.Collections.Specialized.

Ele retornará todas as chaves disponíveis dentro desta seção personalizada e, com base nas chaves, podemos obter os valores facilmente, como mostrado abaixo.

O resultado final é visto a seguir:

3- Lendo informações de configuração de uma seção dentro de um grupo no App.Config

Vamos complicar o cenário um pouco. Vamos criar uma seção dentro de um grupo, para que, se necessário, possamos adicionar várias seções no mesmo grupo. Estamos agrupgando o mesmo tipo de seção em um grupo.

No exemplo vamos criar um grupo chamado SiteGroup e dentro dele, vamos definir uma seção “ArtigoSetting” e seu tipo como NameValueSectionHandler. A seção "ArtigoSetting" contém os pares chave/valor separadamente, como mostrado abaixo.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>     
    <sectionGroup name="SiteGroup">  
      <section name="ArtigoSetting" type="System.Configuration.NameValueSectionHandler"/>  
    </sectionGroup>  
  </configSections>    
  <SiteGroup>  
    <ArtigoSetting>  
      <add key="ArtigoTitulo" value="Criando aplicações ASP .NET Core"/>  
      <add key="Categoria" value="C#"></add>  
      <add key="Autor" value="Mukesh Kumar"></add>  
      <add key="PostadoEm" value="28 de Março de 2019"></add>  
    </ArtigoSetting>  
  </SiteGroup>  
   <startup> 
       <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
   </startup>
</configuration>

Para poder acessar as informações da seção usamos o código abaixoonde obtemos informações da seção "SiteGroup/ArtigoSetting" e listamos todas as chaves e valores:

O resultado obtido é dado a seguir:

Pegue o código do projeto aqui :  DemoConfig.zip

"Porque o reino de Deus não é comida nem bebida, mas justiça, e paz, e alegria no Espírito Santo."
Romanos 14:17

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti