Uma das necessidades mais comuns durante o desenvolvimento de sistemas nas mais variadas plataformas é o armazenamento de informações de forma local. De fato são várias as soluções possíveis e muitas delas são de fácil implementação, porém, qual seria a mais adequada? A mais segura e prática em termos de desenvolvimento?

Para quem já trabalhou ou teve a oportunidade de conhecer o Delphi, pode ter visto em algum momento os arquivos INI, muito comumente utilizados para a gravação de informações locais em um arquivo de texto. Outra saída seria usar um arquivo de extensão TXT e tratar de forma específica a leitura e escrita de informações. Um XML também seria uma boa opção.

Porém, veremos que o .NET Framework nos fornece uma grande facilidade para suprir esse tipo de necessidade em aplicações desktop Windows. São os chamados arquivos de configuração. Apesar do nome tão genérico, veremos que trata-se de um recurso de grande valia para quem trabalha com esse tipo de projeto e precisa guardar informações de forma prática.

Para conhecermos melhor esta funcionalidade, crie um projeto do tipo Console Application no Visual Studio. Feito isso, acesse o menu Project > Properties. Provavelmente, neste momentoo Visual Studio identificará que seu projeto ainda não possui um arquivo de configurações e lhe dará a opção para cria-lo, conforme mostra a Figura 1.

Criando arquivo de configurações

Figura 1: Criando arquivo de configurações

Clicando na opção realçada em vermelho na figura, o arquivo de configurações será criado e você será redirecionado para o editor, como mostra a Figura 2.

Editor de configurações

Figura 2: Editor de configurações

Note que existem quatro campos: Name, Type Scope e Value. A seguir cada uma é explicada em detalhes:

Name: trata-se do nome da configuração, pelo qual esta será referenciada em todo o projeto. Apesar de serem aceitos caracteres especiais nesse campo, é aconselhado não utilizá-los, para evitar possíveis futuros problemas de sintaxe.

Type: este campo indica o tipo da propriedade que ser String, Decimal, Double, etc. Ainda é possível buscar tipos específicos. É importante selecionar o tipo correto, pois ele será validado durante a definição de valores para esta propriedade.

Scope: o escopo da configuração indica quem terá permissão de acesso sobre ela. Definindo o escopo como “Application”, o valor só poderá ser definido em tempo design, mas poderá ser lido em runtime. Já o escopo “User” é utilizado para configurações que precisam ser alteradas em runtime, ou seja, é o tipo utilizado par armazenar valores dinamicamente.

Value: este é o valor propriamente dito da configuração, não há muito o que comentar.

Para iniciarmos os testes, crie uma configuração chamada “Nome” e do tipo String e defina seu valor como “DevMedia” ou algum valor de sua escolha. Salve o projeto.

Agora, no Solution Explorer abra o arquivo app.config, é nele que ficam armazenadas as variáveis criadas, como mostra a Listagem 1.

Listagem 1: Trecho do arquivo app.config


    
        
            DevMedia
        
    

Vamos incialmente apenas exibir o valor dessa propriedade no console. Para isso, altere o método main da aplicação de acordo com a listagem a seguir.

Listagem 2: Exibindo o valor da propriedade

static void Main(string[] args)
{
    Console.Write(Properties.Settings.Default.Nome);
    Console.ReadLine();
}

Note que para acessar a propriedade basta referenciar a classe Settings no namespace Properties e através da propriedade Default, que armazena as configurações criadas, usar o nome dado à variável.

Executando o projeto, o valor previamente atribuído à variável (“DevMedia ou um valor de sua escolha) será exibido no console, como se vê na imagem a seguir.

Valor da variável exibido no console

Figura 3: Valor da variável exibido no console

Alterar o valor da configuração não é mais complicado que obtê-lo. Porém, após fazer as alterações, para que elas sejam persistidas para o arquivo, é necessário invocar um método que grava essas informações. O código a seguir mostra o novo conteúdo do método main da aplicação, alterado para ler um valor na tela e salvá-lo.

Listagem 3: Lendo e gravando configurações

static void Main(string[] args)
{
    Console.WriteLine("O valor atual da variável e: " + Properties.Settings.Default.Nome);
    Console.Write("Informe o novo valor da variável Nome: ");
    string novoNome = Console.ReadLine();
    Properties.Settings.Default.Nome = novoNome;
    Properties.Settings.Default.Save();
    Console.ReadLine();
}

Em execução, o programa exibirá o valor atual da variável de configuração Nome e solicitará que seja informado um novo valor. Insira um texto de sua escolha, a exemplo do que mostra a Figura 4.

Definição de novo valor para a configuração

Figura 4: Definição de novo valor para a configuração

Feito isso, encerre a aplicação e execute novamente. Agora é de se esperar que o valor que acabou de ser inserido seja informado como valor atual.

Exibição do novo valor da variável

Figura 5: Exibição do novo valor da variável

Como dito acima, o novo valor foi salvo.

Com isso você tem uma base para criar novas configurações, alterá-las e salvá-las em tempo de execução, persistindo as mudanças para posterior utilização.

Espero que o conteúdo tenha sido útil. Agradeço a atenção e até a próxima oportunidade.