保存用户可修改的字符串列表

时间:2014-02-16 22:22:19

标签: c# app-config configuration-files

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

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

<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");

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

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

3 个答案:

答案 0 :(得分:0)

我认为如果你使用的是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加载/更新它。

答案 1 :(得分:0)

  

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

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

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

简单的文本文件,XML文件,数据库等...

只需选择一个。

答案 2 :(得分:0)

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