.net 在配置文件中存储值的集合
在.NET3.5(Windows)服务中,我想在配置文件中存储一小部分值。基本上,我需要允许管理员在这个小集合中添加和删除值。我需要向配置文件中添加什么来存储小值集合,以及如何在C#中读取集合 为了澄清,我正在寻找的数据集如下:.net 在配置文件中存储值的集合,.net,collections,config,.net,Collections,Config,在.NET3.5(Windows)服务中,我想在配置文件中存储一小部分值。基本上,我需要允许管理员在这个小集合中添加和删除值。我需要向配置文件中添加什么来存储小值集合,以及如何在C#中读取集合 为了澄清,我正在寻找的数据集如下: <Illegal Characters> <CustomCollection value="?"/> <CustomCollection value="#"/> <CustomCollection value=","
<Illegal Characters>
<CustomCollection value="?"/>
<CustomCollection value="#"/>
<CustomCollection value=","/>
</Illegal Characters>
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;
}
我将在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()
如果值的数量很小,并且与它们关联的名称是固定的,则应该能够将它们存储在appSettings配置部分中,并使用.appSettings集合引用它们。这对于标准的键值对非常有效。如果您的数据比这更复杂,那么您可能需要定义自己的配置节和关联的配置节,以便将数据解析为所需的任何自定义对象。您可能还希望实现一个,以检测配置文件的更改并更新正在运行的应用程序的配置,除非可以启动/停止服务以应用新配置。作为替代,您可以将单个非法字符字符串作为正则表达式存储在配置文件中。这样,您就不必遍历字符来检查它们是否在给定字符串中使用——您可以基于正则表达式进行比较。可能会节省一点cpu和复杂性
当然,如果管理员要直接编辑文件,那么使用单个XML节点就更容易了。但是,如果他们通过应用程序本身更改字符列表,则使用正则表达式可能会更好。有一篇关于创建自定义配置节处理程序的文章,该处理程序将值作为列表加载 基本上,
IConfigurationSectionHandler
的创建方法应该如下所示:
<Illegal Characters>
<CustomCollection value="?"/>
<CustomCollection value="#"/>
<CustomCollection value=","/>
</Illegal Characters>
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;
}
公共对象创建(对象父对象、对象配置上下文、XmlNode部分)
{
IList非法=新列表();
XmlNodeList ProcessNodes=section.SelectNodes(“CustomCollection”);
foreach(ProcesssNodes中的XmlNode子节点)
{
非法.Add(子.Attributes[“value”].InnerText);
}
退货不合法;
}