Gerenciamento de Configurações JSON em C# para Projetos Pequenos

1, Adicionando uma classe auxiilar JsonSettingsManager no DAL

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*
 * É necessário adicionar a referência Newtonsoft.Json.dl
 */

namespace SistemaRelatoriosDAL
{
    public class JsonSettingsManager
    {
        private static Dictionary<string, string> settingsDictionary = new Dictionary<string, string>();

        /// <summary>
        /// Obtém uma configuração específica
        /// </summary>
        /// <param name="chave">Chave da configuração</param>
        /// <returns>Valor da configuração ou string vazia se não existir</returns>
        public static string ObterConfiguracao(string chave)
        {
            if (!File.Exists("configuracoes.json")) // Se não existir, cria o arquivo
            {
                using (FileStream arquivo = File.Create("configuracoes.json"))
                {
                    arquivo.Close();
                }
            }
            
            string conteudo = File.ReadAllText("configuracoes.json");
            try
            {
                settingsDictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(conteudo);
            }
            catch
            {
                settingsDictionary = new Dictionary<string, string>();
            }

            return settingsDictionary != null && settingsDictionary.ContainsKey(chave) 
                ? settingsDictionary[chave] 
                : string.Empty;
        }

        /// <summary>
        /// Salva uma configuração
        /// </summary>
        /// <param name="chave">Chave da configuração</param>
        /// <param name="valor">Valor a ser salvo</param>
        public static void SalvarConfiguracao(string chave, string valor)
        {
            if (settingsDictionary == null)
            {
                settingsDictionary = new Dictionary<string, string>();
            }
            
            settingsDictionary[chave] = valor;
            string json = JsonConvert.SerializeObject(settingsDictionary);
            File.WriteAllText("configuracoes.json", json);
        }

        /// <summary>
        /// Remove uma configuração
        /// </summary>
        /// <param name="chave">Chave da configuração a ser removida</param>
        public static void RemoverConfiguracao(string chave)
        {
            if (settingsDictionary != null && settingsDictionary.ContainsKey(chave))
            {
                settingsDictionary.Remove(chave);
                string json = JsonConvert.SerializeObject(settingsDictionary);
                File.WriteAllText("configuracoes.json", json);
            }
        }
    }
}

2, Carregando confiugrações ao iniciar o formulário

            //【1】Carregar configurações salvas
            configuracoes.CaminhoArquivoReferencia = JsonSettingsManager.ObterConfiguracao(this.txt_CaminhoReferencia.Name);
            configuracoes.CaminhoArquivoComparacao = JsonSettingsManager.ObterConfiguracao(this.txt_CaminhoComparacao.Name);
            configuracoes.CaminhoArquivoAtlas = JsonSettingsManager.ObterConfiguracao(this.txt_CaminhoAtlas.Name);
            
            //【2】Atualizar valores nos controles
            this.txt_CaminhoReferencia.Text = configuracoes.CaminhoArquivoReferencia;
            this.txt_CaminhoComparacao.Text = configuracoes.CaminhoArquivoComparacao;
            this.txt_CaminhoAtlas.Text = configuracoes.CaminhoArquivoAtlas;

3, Atualizando configurações através de um botão

        // Método para salvar as alterações nas configurações
        private void btn_SalvarAlteracoes_Click(object sender, EventArgs e)
        {
            JsonSettingsManager.SalvarConfiguracao(this.txt_CaminhoReferencia.Name, this.txt_CaminhoReferencia.Text);
            JsonSettingsManager.SalvarConfiguracao(this.txt_CaminhoComparacao.Name, this.txt_CaminhoComparacao.Text);
            JsonSettingsManager.SalvarConfiguracao(this.txt_CaminhoAtlas.Name, this.txt_CaminhoAtlas.Text);
        }

4, Local do arquivo de configurração salvo

Tags: C# JSON Newtonsoft.Json Configurações arquivos

Publicado em 7-8 16:06