C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# App.Config文件操作

C#之App.Config文件操作的实现

作者:*Major*-莙工科技有限公司

AppConfigHelper提供了一种方便的方式来读取、添加、修改和删除应用程序配置文件中的配置项,本文主要介绍了C#之App.Config文件操作的实现,感兴趣的可以了解一下

一 AppConfigHelper

  using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Helper
{
    /// <summary>
    /// 操作配置文件(App.config)
    /// </summary>
    public class AppConfigHelper
    {

        /// <summary>
        /// 输入Key的值,返回配置的值
        /// </summary>
        /// <param name="KeyName"></param>
        /// <returns></returns>
        public string ReadConfig(string KeyName)
        {
            Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            return cfa.AppSettings.Settings[KeyName].Value;
        }

        /// <summary>
        /// 根据配置的名称,查询独立的数据,读取app.config
        /// </summary>
        /// <param name="ProName"></param>
        /// <param name="KeyName"></param>
        /// <returns></returns>
        public string ReadConfig(string ProName, string KeyName)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            var mySection = config.GetSection(ProName) as CommonSection;
            foreach (CommonSection.CommonKeyValueSetting add in mySection.KeyValues)
            {
                if (add.Key == KeyName)
                {
                    return add.Value;
                }
            }
            return null;
        }

        /// <summary>
        /// 增加配置文件
        /// </summary>
        /// <param name="KeyName"></param>
        /// <param name="Value"></param>
        public void AddConfig(string KeyName, string Value)
        {
            Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            cfa.AppSettings.Settings.Add(KeyName, Value);
            cfa.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
        }

        /// <summary>
        /// 根据配置的名称,查询独立的数据,并添加独立的内容
        /// </summary>
        /// <param name="ProName"></param>
        /// <param name="KeyName"></param>
        /// <param name="Value"></param>
        /// <returns></returns>
        public void AddConfig(string ProName, string KeyName, string Value)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            var mySection = config.GetSection(ProName) as CommonSection;
            mySection.KeyValues.Add(new CommonSection.CommonKeyValueSetting() { Key = KeyName, Value = Value });
            config.Save();
            ConfigurationManager.RefreshSection(ProName);  //刷新
        }

        /// <summary>
        /// 删除配置文件
        /// </summary>
        /// <param name="KeyName"></param>
        public void DeleteConfig(string KeyName)
        {
            Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            cfa.AppSettings.Settings.Remove(KeyName);
            cfa.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
        }

        /// <summary>
        /// 修改配置文件数据
        /// </summary>
        /// <param name="KeyName"></param>
        /// <param name="Value"></param>
        public void WriteConfig(string KeyName, string Value)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            config.AppSettings.Settings[KeyName].Value = Value;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
        }

        /// <summary>
        /// 根据配置的名称,查询独立的数据,并修改内容
        /// </summary>
        /// <param name="ProName"></param>
        /// <param name="KeyName"></param>
        /// <param name="Value"></param>
        /// <returns></returns>
        public void WriteConfig(string ProName, string KeyName, string Value)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            var mySection = config.GetSection(ProName) as CommonSection;
            mySection.KeyValues.Remove(KeyName);
            mySection.KeyValues.Add(new CommonSection.CommonKeyValueSetting() { Key = KeyName, Value = Value });
            config.Save();
            ConfigurationManager.RefreshSection(ProName);  //刷新
        }

    }
    /// <summary>
    /// 配置节点基类
    /// </summary>
    public class CommonSection : ConfigurationSection
    {

        private static ConfigurationProperty s_property =
            new ConfigurationProperty(string.Empty, typeof(CommonKeyValueCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);

        [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
        public CommonKeyValueCollection KeyValues
        {
            get
            {
                return (CommonKeyValueCollection)base[s_property];
            }
        }

        /// <summary>
        /// 自定义一个集合
        /// </summary>
        [ConfigurationCollection(typeof(CommonKeyValueSetting))]
        public class CommonKeyValueCollection : ConfigurationElementCollection
        {

            public CommonKeyValueCollection() : base(StringComparer.OrdinalIgnoreCase)
            {

            }

            new public CommonKeyValueSetting this[string name]
            {
                get { return (CommonKeyValueSetting)base.BaseGet(name); }
                set { base[name] = value; }
            }

            protected override ConfigurationElement CreateNewElement()
            {
                return new CommonKeyValueSetting();
            }


            protected override object GetElementKey(ConfigurationElement element)
            {
                return ((CommonKeyValueSetting)element).Key;
            }

            public void Add(CommonKeyValueSetting setting)
            {
                this.BaseAdd(setting);
            }

            public void Clear()
            {
                base.BaseClear();
            }

            public void Remove(string name)
            {
                base.BaseRemove(name);
            }

        }

        /// <summary>
        /// 集合中的每个元素
        /// </summary>
        public class CommonKeyValueSetting : ConfigurationElement
        {

            /// <summary>
            /// 键
            /// </summary>
            [ConfigurationProperty("key", IsRequired = true)]
            public string Key
            {
                get { return this["key"].ToString(); }
                set { this["key"] = value; }
            }

            /// <summary>
            /// 值
            /// </summary>
            [ConfigurationProperty("value", IsRequired = true)]
            public string Value
            {
                get { return this["value"].ToString(); }
                set { this["value"] = value; }
            }

        }

    }

}

二 读取标准 appSettings

添加appSettings

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>

	<appSettings>
		<add key="Width" value="100"/>
		<add key="Height" value="200"/>
		<add key="Area" value="99"/>
	</appSettings>
</configuration>

读取appSettings

  // 全局变量
  AppConfigHelper config = new AppConfigHelper();
  string h = config.ReadConfig("Height");
  MessageBox.Show(h.ToString());

三 添加配置 appSettings

   config.AddConfig("XXXX", "vvvv");
   MessageBox.Show("添加成功!!");

   string va = config.ReadConfig("XXXX");

四 修改标准 appSettings

         config.WriteConfig("Height", "7777");
         MessageBox.Show("修改成功!!");

五 删除配置 appSettings

       config.DeleteConfig("Height");
       MessageBox.Show("删除成功!!");

到此这篇关于C#之App.Config文件操作的实现的文章就介绍到这了,更多相关C# App.Config文件操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文