Могу ли я программно получить раздел конфигурации, не зная его названия - PullRequest
1 голос
/ 07 января 2012

В конфигурации .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 Ответ

1 голос
/ 07 января 2012

не должно быть проблемой. Смотрите это:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationsectiongroup.aspx

...