我可以编程获取配置部分而不知道它的名称

时间:2012-01-06 23:44:51

标签: .net configuration configuration-management

在.NET配置中,您可以编写自己的配置部分,并在如何构建它(如XML)方面拥有相当大的自由度。因此,在大多数情况下,我们这样做:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="MySection" type="MySectionType, MySectionAssembly" ... />
    </configSections>

    <MySection>
        ...
    </MySection>
</configuration>

然后,要访问我们的代码部分,我们执行以下操作:

MySection mySection = (MySection) ConfigurationManager.GetSection("MySection");

上面的示例是我看到在代码中获得自定义部分的唯一方法。

现在想象一下,我们有一个库或框架,它定义了MySection类以及它内部结构的类。我们希望为第三方开发人员提供这些类和结构,这些开发人员将在其应用程序中定义配置文件。同时,我们的框架需要以编程方式获取该部分才能正常运行。

显然,我们框架的最终用户可以绝对自由地将MySection命名为其他任何内容。因此,上面的代码将无法加载该部分。有没有一个很好的方法来克服这个问题?决定强迫图书馆的消费者只按我们想要的方式命名他们的部分,这是我想避免做的事情。

编辑: 该场景的另一个复杂因素是将该部分放在一个部分组中:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="MyGroup">
            <section name="MySection" type="MySectionType, MySectionAssembly" ... />
        </sectionGroup>
    </configSections>

    <MyGroup>
        <MySection>
            ...
        </MySection>
    </MyGroup>
</configuration>

是否有可能处理这种情况?

提前致谢。

1 个答案:

答案 0 :(得分:1)