Получение имени раздела конфигурации, зарегистрированного для определенного типа в .net - PullRequest
1 голос
/ 11 июня 2010

У меня есть пользовательский раздел конфигурации для библиотеки, и я хотел бы загрузить свой объект конфигурации из самой библиотеки.
Обязан ли я исправить группу и имя раздела конфигурации, например,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="MyGroup">
      <section name="MySection" type="MyAssembly.MySection, MyAssembly"/>
    </sectionGroup>
  </configSections>
  <MyGroup>
    <MySection something="xxx" />
  </MyGroup>
</configuration>

MySection cfg = (MySection)ConfigurationManager.GetSection("MyGroup/MySection");

или есть способ получить путь к разделу, зарегистрированному для данного типа, так что, например, если пользователь поместил раздел конфигурации в группу с другим именем, я все равно могу его получить?
Что-то вроде

<sectionGroup name="AnotherGroupName">
  <section name="MySection" type="MyAssembly.MySection, MyAssembly"/>
</sectionGroup>

string sectionPath = SomeClass.GetSectionPath(typeof(MySection));
MySection cfg = (MySection)ConfigurationManager.GetSection(sectionPath);

1 Ответ

2 голосов
/ 11 июня 2010

Существует очень хороший способ запретить пользователю переименовывать группу.Жесткий код имени группы в вашем коде, чтобы он больше не работал, когда она портится с именем.Приспособление таких произвольных изменений не имеет большого смысла и вызывает больше проблем, чем решает.Если вас беспокоят конфликты имен, вы, безусловно, можете добавить открытое свойство, которое позволяет клиентскому коду переопределять имя группы.

...