2016-04-28 3 views
1

У нас есть app.config мы используем с сатуратора:Продлить элемент в App.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="carbonator" type="Crypton.Carbonator.Config.CarbonatorSection, Crypton.Carbonator"/> 
    </configSections> 

    <carbonator defaultCulture="en-US" logLevel="1" collectionInterval="1000" reportingInterval="1000" > 
    <statsd server="127.0.0.1" port="8125" /> 
    <counters> 
     <add path="processor_information.pct_processor_time.total" category="Processor" counter="% Processor Time" instance="_Total" /> 
     <add path="memory.available_MBytes" category="Memory" counter="Available MBytes" instance="" /> 
     <add path="memory.pct_commited_bytes_in_use" category="Memory" counter="% Committed Bytes In Use" instance="" /> 
    </counters> 
    </carbonator> 
</configuration> 

Мы хотим, чтобы пользователи могли настроить свои собственные счетчики во внешнем файле конфигурации, который мы ссылаемся из <counters> элемента , Например, мы хотели бы, чтобы конфигурационный файл пользователю выглядеть следующим образом:

<add path="logical_disk.pct_free_space.C" category="LogicalDisk" counter="% Free Space" instance="C:" /> 
<add path="logical_disk.disk_read_bytes_per_sec.C" category="LogicalDisk" counter="Disk Read Bytes/sec" instance="C:" /> 
<add path="logical_disk.disk_write_bytes_per_sec.C" category="LogicalDisk" counter="Disk Write Bytes/sec" instance="C:" /> 

Я даже не знаю, если это возможно, за пределами из appConfig элемента, но любая помощь приветствуется.

ответ

3

Согласно this answer, это должно быть возможно. Тот же способ описан также в this article.

Но я не думаю, что это хорошая идея по одной причине - если пользователь допустил ошибку в своем расширении конфигурации, это предотвратит выполнение приложения, поскольку конфигурация приложения стала недействительной.

Я предпочел бы использовать конфигурацию в файле app.config, чтобы предоставить значения по умолчанию и реализовать некоторую пользовательскую конфигурацию самостоятельно. В таком случае вы можете использовать любой желаемый формат конфигурации, например JSON, что также было бы лучше (проще создавать и редактировать) для пользователей. В вашем приложении вы просто объединяете обе конфигурации (значения app.config являются значениями по умолчанию, которые будут перезаписаны конфигурацией пользователя).

+0

Спасибо за ответ. Мы по-прежнему расследуем лучший подход, но я буду учитывать ваши предложения. – lhoworko

+0

Добро пожаловать. Я бы определенно реализовал пользовательскую конфигурацию для пользовательской конфигурации, потому что вы можете контролировать все. Вы можете представить пользователю более эффективные сообщения об ошибках (фактически значимые сообщения, поскольку сообщения об ошибках по умолчанию, вызванные неправильным «app.config», могут быть довольно запутанными для пользователя). –

 Смежные вопросы

  • Нет связанных вопросов^_^