【问题标题】: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 节点会更容易。但如果他们通过应用程序本身更改字符列表,那么正则表达式可能会很好。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案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()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-05-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-03
            相关资源
            最近更新 更多