如何在不实现 IConfigurationSectionHandler 接口的情况下使用自定义节处理程序

本文关键字:自定义 程序 处理 情况下 实现 接口 IConfigurationSectionHandler | 更新日期: 2023-09-27 18:30:22

我想在我的web.config文件中创建一个这样的部分:

<paths>
                <path>''123.123.132.123'c$'test'folder</path>
                <path>''123.123.132.123'c$'test'folder</path>
</paths>

我正在寻找替代方案,我想使用默认的部分处理程序之一,但我只能找到与此配置一起使用的部分处理程序

<CustomGroup>
        <add key="key1" value="value1"/>
</CustomGroup>

(这将是 SingleTagSectionHandlers、DictionarySectionHandlers、NameValueSectionHandler 等)。

有什么方法可以将 标签替换为<路径>标签?还是必须实现 IConfigurationSectionHandler 接口?

如何在不实现 IConfigurationSectionHandler 接口的情况下使用自定义节处理程序

我是否必须实现 IConfigurationSectionHandler 接口?

如果您使用 System.Configuration.IgnoreSectionHandler,则不必这样做。

网络.config

<configuration>
  <configSections>
    <section name="Paths" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>
  <Paths>
    <path>''123.123.132.123'c$'test'folder</path>
    <path>''123.123.132.123'c$'test'folder</path>
  </Paths>

然后,您可以使用任何您想要获取值的内容手动读取 web.config。

public IEnumerable<string> GetPathsFromConfig()
{
  var xdoc = XDocument.Load(ConfigurationManager
    .OpenExeConfiguration(ConfigurationUserLevel.None)
    .FilePath);
  var paths = xdoc.Descendants("Paths")
    .Descendants("path")
    .Select(x => x.Value);
  return paths
}

其他明智的做法,您必须使用配置部分(操作方法)创建自定义配置部分。