У нас есть много файлов конфигурации, используемых в нашем приложении. По крайней мере 100 различных XML-файлов для каждого клиента, содержащие не менее 50-80 пар имя / значение конфигурации, и все они часто меняются (по крайней мере, каждый месяц).
Файл конфигурации выглядит примерно так, как показано ниже,
<property id="url" value="s123"/>
<property id="input-element-name" value="name" />
<property id="input-element-xpath" value="//body;//form;//table[3];" />
В настоящее время для чтения этих значений из xml-файла мы используем XmlReader и др. И сохраняем его в кеше, как только приложение запускается (а это может быть огромным завтра, когда наша клиентская база увеличится). Чтобы получить доступ к идентификаторам свойств, мы создали переменные const в статическом классе, чтобы избежать опечаток и т. Д.,
Этот подход был великолепен, когда у нас было меньше конфигураций. Теперь трудно поддерживать и добавлять все новое в этот файл конфигурации. Необходимость перестройки и т. Д., Просто убивает концепцию сохранения настраиваемых значений вне кода.
Мне было просто интересно, если бы какие-либо недавние разработки в .NET-пространстве, такие как язык M, IronPython мог помочь здесь иметь динамически типизированные и скомпилированные значения конфигурации по требованию, когда файл конфигурации изменяется. У нас нет никаких ограничений в том, что у нас есть формат xml для конфигурации.
Таким образом, мне нужно иметь некоторые файлы .XXX, имеющие наши значения конфигурации, и, если что-то изменяется или добавляется, это должно автоматически компилироваться и использоваться в нашем приложении без создания констант и т. Д., Я знаю, что происходит нечто подобное с файлами .T в VS.
Я надеюсь, что это может быть выполнимо ..
UPDATE
Идея этого вопроса, похоже, не была правильно понята, иначе я бы не правильно изложил. Извините за беспокойство.
Пользовательский раздел конфигурации может не подходить для этой проблемы, причина использования ConfigurationSection
требует модификации кода, если я добавлю новую пару имя / значение. Однако этот подход будет работать, если только изменить значения, так как часть имени сопоставляется со свойством в коде.
Мне было интересно, если я использую какие-либо динамические языковые породы, такие как IronPython или M Language, я смогу переместить весь XML в него, и в моем приложении я смог бы увидеть любые изменения в этом файле (используя `FileSystemWatcher ') и выполните его, чтобы прочитать вновь добавленные пары имя / значение конфигурации.