【问题标题】:Saving List of strings modifiable by user保存用户可修改的字符串列表
【发布时间】:2014-03-16 01:36:25
【问题描述】:

我正在尝试存储一些将用于填充下拉列表的类别,但是我希望将一些基本类别存储在某处(一直在尝试 app.config),但随后也允许用户添加/根据需要删除类别。

我已经阅读了很多关于带有 ConfigurationElementCollection 的自定义 ConfigurationSection 的信息,但我无法理解它。我最终选择了分隔值选项并使用了拆分:

<appSettings>
    <add key="categories" value="Work;Education;Taxes;Medical"/>
</appSettings>

然后我尝试做以下我也在网上找到的:

string categories = ConfigurationManager.AppSettings.Get("categories");
ConfigurationManager.AppSettings.Remove("categories");
ConfigurationManager.AppSettings.Add("categories", categories + ";Test");

但是得到它是只读的错误。

我的问题是,实现这样的事情的正常方法是什么,其中像组合框这样的控件的元素列表存储在一些可以读取和修改的配置中?

【问题讨论】:

    标签: c# app-config configuration-files


    【解决方案1】:

    我认为,如果您使用 appSettings,那完全没问题,除非您预计数据的复杂性或数量会变得笨拙。对于一个简单的、小型的、主要是静态的查找,我认为没关系。

    至于您无法将值保存回配置的问题,您需要使用ConfigurationManager.OpenExeConfiguration

    Configuration config =
        ConfigurationManager.OpenExeConfiguration("app.config");
    
    string categories = ConfigurationManager.AppSettings.Get("categories");
    config.AppSettings.Remove("categories");
    config.AppSettings.Add("categories", categories + ";Test");
    
    config.Save(ConfigurationSaveMode.Modified);
    

    如果每个用户都有很多复杂的设置,那么这种方法可能不是最好的方法。如果不能选择数据库,您可以使用单独的 XML 配置文件并通过 XmlSerializerXLinq 加载/更新它。

    【讨论】:

      【解决方案2】:

      我的问题是,实现这样的事情的正常方法是什么 组合框等控件的元素列表存储在 一些可以读取和修改的配置?

      为什么要使用 App.Config 作为存储资源文件?

      您还有许多其他存储和持久性选项,例如:

      简单的文本文件、XML文件、数据库等等……

      只需选择一个。

      【讨论】:

        【解决方案3】:

        据我所知,您将无法修改硬编码到项目中的任何内容。尝试从文件(如简单的 xml 文件)或数据库中访问和修改它。

        【讨论】:

          猜你喜欢
          • 2021-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-11
          • 1970-01-01
          • 1970-01-01
          • 2018-10-06
          • 1970-01-01
          相关资源
          最近更新 更多