C# 操作配置文件的方法

using System;
using System.Configuration;

namespace HT.IMS.Utility
{
    /// <summary>
    /// 操作配置文件(修改)
    /// </summary>
    public class AppSettings
    {
        /// <summary>
        /// 设置配置文件AppSettings节点的键名和值并持久化到文件
        /// </summary>
        /// <param name="key">节点名称</param>
        /// <param name="value">节点值</param>
        public static void SetConfig(string key, string value)
        {
            try
            {
                //打开配置文件流
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                AppSettingsSection section = config.AppSettings;

                if (section != null && section.Settings[key] != null)
                {
                    section.Settings[key].Value = value;
                }
                else
                {
                    section.Settings.Add(new KeyValueConfigurationElement(key, value));
                }

                //保存修改后的节点
                config.Save(ConfigurationSaveMode.Modified);

                //刷新节点,以便下次从 ConfigurationManager.AppSettings 中取值时,
                //重新从磁盘读取节点的值
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void SetConfigConnectionstring(string key, string value)
        {
            try
            {
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                ConnectionStringsSection section = config.ConnectionStrings;

                if (section != null && section.ConnectionStrings[key] != null)
                {
                    section.ConnectionStrings[key].ConnectionString = value;
                }
                else
                {
                    section.ConnectionStrings.Add(new ConnectionStringSettings(key, value, "System.Data.SqlClient"));
                }

                config.Save(ConfigurationSaveMode.Modified);

                ConfigurationManager.RefreshSection("connectionStrings");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

    /// <summary>
    /// 操作配置文件(读取)
    /// </summary>
    /// <typeparam name="T">返回什么类型的值</typeparam>
    public class AppSettings<T> : AppSettings
    {
        public static T GetConfig(string key, byte valType = 0)
        {
            try
            {
                Type type = typeof(T);
                object result = null; //返回特定类型的值                
                object val = null; //配置节点的值

                if (valType == 0)
                    val = ConfigurationManager.AppSettings[key];
                else
                    val = ConfigurationManager.ConnectionStrings[key];

                if (type == typeof(int))
                    result = Convert.ToInt32(val);
                else if (type == typeof(string))
                    result = Convert.ToString(val);
                else if (type == typeof(double))
                    result = Convert.ToDouble(val);
                else
                    result = Convert.ChangeType(val, type);

                return (T)result;
            }
            catch
            {
                return default(T);
            }
        }
    }
}
原文地址:https://www.cnblogs.com/hellowzl/p/9118267.html