2016-04-28 54 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'的默認錯誤消息可能會讓用戶感到困惑)。 –