4

在 .Net 3.5 (Windows) 服务中,我想在配置文件中存储一小部分值。基本上,我需要允许管理员在这个小集合中添加和删除值。我需要在配置文件中添加什么来存储小值的集合,以及如何在 C# 中读取集合?

为了澄清,我正在寻找的集合是这样的数据:

<Illegal Characters>
  <CustomCollection value="?"/>
  <CustomCollection value="#"/>
  <CustomCollection value=","/>
</Illegal Characters>
4

4 回答 4

3

有一篇关于创建自定义配置节处理程序的好文章,它将值作为列表加载在这里

基本上你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;
}
于 2009-05-06T06:21:12.977 回答
2

作为替代方案,您可以将单个非法字符字符串作为正则表达式存储在配置文件中。这样您就不必遍历字符来检查它们是否在给定的字符串中使用 - 您可以根据正则表达式进行比较。可能会节省一些 cpu 和复杂性。

当然,如果管理员要直接编辑文件,使用单个 XML 节点会更容易。但是,如果他们通过应用程序本身更改字符列表,那么正则表达式可能会很好。

于 2009-04-01T03:49:19.187 回答
1

如果值的数量很少并且与它们关联的名称是固定的,您应该能够将它们存储在 appSettings 配置部分并使用ConfigurationManager .AppSettings 集合引用它们。这对于标准键值对非常有效。如果您的数据比这更复杂,您可能希望定义自己的配置部分和关联的ConfigurationSectionHandler以将数据解析为您想要的任何自定义对象。您可能还需要实现FileSystemWatcher来检测对配置文件的更改并更新正在运行的应用程序的配置,除非启动/停止服务以应用新配置是可以接受的。

于 2009-03-31T18:05:52.943 回答
0

我将描述 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()
于 2009-03-31T18:03:20.737 回答