C#app.config配置文件多组<appSettings>怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#app.config配置文件多组<appSettings>怎么办?相关的知识,希望对你有一定的参考价值。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="AutoIncrease" value=""/>
</appSettings>
</configuration>
我需要多组<add key="AutoIncrease" value=""/>而且必须叫"AutoIncrease",有没有办法呢?

appSettions中设置的是全局参数,所以key必须是唯一的,你要想都叫AutoIncrease这一特征的,只有两种方式:
1.定义多个AutoIncrease特征的key,但都后缀一个序号,然后在程序代码中再去分别划分来调用如:AutoIncrease1、AutoIncrease2,……
2.定义一个AutoIncrease的key,将value存储为多值的形式,以自定义分隔符隔开,同要需要在程度代码中再调用时将其分离开,如:分隔符用逗号:1,2,3,……,调用时使用.Split(',')来分离

再有一种方法就是在脱离app.config这种特定XML规则的文件中存储,此方法可自定义数据存储结构
参考技术A 没有办法,配置文件中的配置信息就和NameValueCollection对象一样,不能存在相同的键。而在配置文件中出现的相同键的情况,会将最后一个将相同键的最后一个值赋值给该键。

我想你需要的是一个数组,你有两个变通的方法来实现:
1、 <add key="AutoIncrease" value="1,2,3,4,6"/> 用逗号分割;
2、
<add key="AutoIncrease_1"
<add key="AutoIncrease_2"
<add key="AutoIncrease_3"
<add key="AutoIncrease_4"
....
再在你的程序中,编写一个自定义的属性节点来读取这里。

c# 配置文件App.config操作类库

 

public class ConfigOperator
    {
        #region 从配置文件获取Value
        /// <summary>
        /// 从配置文件获取Value
        /// </summary>
        /// <param name="key">配置文件中key字符串</param>
        /// <returns></returns>
        public static string GetValueFromConfig(string key)
        {
            try
            {
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //获取AppSettings的节点 
                AppSettingsSection appsection = (AppSettingsSection)config.GetSection("appSettings");
                return appsection.Settings[key].Value;
            }
            catch
            {
                return "";
            }
        }
        #endregion

        #region 设置配置文件
        /// <summary>
        /// 设置配置文件
        /// </summary>
        /// <param name="key">配置文件中key字符串</param>
        /// <param name="value">配置文件中value字符串</param>
        /// <returns></returns>
        public static bool SetValueFromConfig(string key, string value)
        {
            try
            {
                //打开配置文件 
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //获取AppSettings的节点 
                AppSettingsSection appsection = (AppSettingsSection)config.GetSection("appSettings");
                appsection.Settings[key].Value = value;
                config.Save();

                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion

 

以上是关于C#app.config配置文件多组<appSettings>怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

C#如何动态修改app.config配置文件?

C#怎么获得配置文件(App.config)的节点(Winfrom)

读取app.config配置文件信息

C#中App.config文件配置获取

c# 配置文件App.config操作类库

C# 通过代码而不是 app.config 配置 LoadFromRemoteSources?