【问题标题】:Store a collection of values in a config file将一组值存储在配置文件中
【发布时间】:2010-10-16 16:19:45
【问题描述】:
在 .Net 3.5 (Windows) 服务中,我想在配置文件中存储一小部分值。基本上,我需要允许管理员在这个小集合中添加和删除值。我需要在配置文件中添加什么来存储小值的集合,以及如何在 C# 中读取集合?
为了澄清,我正在寻找的集合是这样的数据:
<Illegal Characters>
<CustomCollection value="?"/>
<CustomCollection value="#"/>
<CustomCollection value=","/>
</Illegal Characters>
【问题讨论】:
标签:
.net
collections
config
【解决方案1】:
有一篇关于创建自定义配置节处理程序的好文章,它将值作为列表加载here。
基本上你的IConfigurationSectionHandler 的 Create 方法应该是这样的:
public object Create(object parent, object configContext, XmlNode section)
{
IList<string> illegal = new List<string>();
XmlNodeList processesNodes= section.SelectNodes("CustomCollection");
foreach (XmlNode child in processesNodes)
{
illegal.Add(child.Attributes["value"].InnerText);
}
return illegal;
}
【解决方案2】:
作为替代方案,您可以将单个非法字符字符串作为正则表达式存储在配置文件中。这样您就不必遍历字符来检查它们是否在给定字符串中使用 - 您可以根据正则表达式进行比较。可能会节省一些 cpu 和复杂性。
当然,如果管理员要直接编辑文件,使用单个 XML 节点会更容易。但如果他们通过应用程序本身更改字符列表,那么正则表达式可能会很好。
【解决方案4】:
我将描述 VB.NET 中的方式,因为我确信 C# 方式在某些情况下非常相似或相同。在解决方案资源管理器中打开我的项目下的 settings.settings 文件。添加所需的设置,例如“OutputPath”。然后,在代码中,用
引用它
variable = My.Settings.OutputPath
' If a user modifiable setting, you can use:
My.Settings.OutputPath = variable
My.Settings.Save()