【问题标题】:How to create nested custom configuration section in c#?如何在 C# 中创建嵌套的自定义配置部分?
【发布时间】:2023-04-12 10:09:01
【问题描述】:

我需要通过以下方式进行自定义配置

<root>
<group>
 <groupitem> 
    <property1/>
    <property2/>
    <property3/>
    <property4/>   
 </groupitem>
<group>
</root>

我没有找到任何如何做到这一点的例子。

以下非常接近,

Nested Configuration Section app.config

但我仍然坚持定义与 groupitem 对应的类。如果我将property1property2 从元素更改为属性,这很容易定义。

但如果这些属性具有嵌套属性,则会产生问题。

问题是,如何按照上面定义的方式定义嵌套层次结构?

【问题讨论】:

    标签: c# configuration custom-configuration


    【解决方案1】:

    配置部分是某些配置模型的*元素。例如,您的产品名称将是配置部分。

    任何其他嵌套元素都是ConfigurationElementConfigurationElementCollection

    实际上您还可以创建派生自ConfigurationSectionGroup 的自定义部分组。

    进行配置:

    <root> <!-- This is a ConfigurationSection -->
    <group><!-- This is a ConfigurationElement -->
     <groupitem> <-- This could be a ConfigurationElement having child items of type ConfigurationElement or a ConfigurationElementCollection -->
        <property1/> <!-- This is a ConfigurationElement -->
        <property2/> <!-- This is a ConfigurationElement -->
        <property3/> <!-- This is a ConfigurationElement -->
        <property4/> <!-- This is a ConfigurationElement -->   
     </groupitem>
    <group>
    

    如果您真的想知道如何使用 .NET 配置模型,请查看以下文章:

    【讨论】:

    • root 可以是一个 ConfigurationSectionGroup 并分组一个 ConfigurationSection
    • @knaki02 是的,谁知道...可能是,也可能不是...我只是想用一个示例来说明 OP。
    • @MatíasFidemraizer,你的 cmets 更好。您共享的链接都创建了相当简单的自定义配置部分(而不是复杂的部分)。我已经完成了你的 cmets,现在正在评估 another approach
    • 对于其他遇到此 * 帖子的人,我已阅读 Matias 链接的两篇文章。如果您想创建一个容器元素,其中包含一个或多个相同类型的子元素的集合,那么编写复杂的自定义配置部分文章特别有用。想像一个自定义 AppSettings 部分,其中可以有多个设置。
    • 这 2 个链接可能会有所帮助,甚至可能是推荐的,但它们不包含有关请求的“嵌套”层次结构的信息。