2013-11-20 42 views
2

在我的web.config,我打破出的配置部分爲獨立的文件:.NET獲取自定義配置節作爲NameValueCollection中

<appSettings configSource="AppSettings.config" /> 
<mySettings configSource="MySettings.config" /> 

然後我用ConfigurationManager中檢索設置:

NameValueCollection appSettings = System.Configuration.ConfigurationManager.AppSettings; 

NameValueCollection中是很方便的,因爲我可以做的:

var someSetting = appSettings["someSetting"]; 

我想爲C做同樣的ustom配置部分,但我無法弄清楚如何獲得的NameValueCollection:

Configuration configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 
ConfigurationSection section = configuration.GetSection("mySettings"); 
KeyValueConfigurationCollection mySettings = ((AppSettingsSection)section).Settings; 

KeyValueConfigurationCollection也適用於讀取某個設置:

var mySetting = mySettings["mySetting"].Value 

,但我想代表我的所有配置的爲了切換到通用處理例程而使用相同的類型。

如何獲取自定義配置節的NameValueCollection?

+0

你有沒有考慮只是爲兩者建立擴展方法,因此界面是* sytactically *相同? –

+0

但我需要將對象傳遞給接受單個參數的構造函數... – BaltoStar

+0

重點在於那些擴展方法可以在任何地方使用。所以,你可以傳入任何一個,擴展方法就可以工作。 –

回答

0

我通常做這個

NameValueCollection customSection 
= (NameValueCollection)ConfigurationManager.GetSection("NAMEOFSECTION"); 

然後用

customSection["key"]檢索值

只是要小心,因爲如果該節不存在,它會返回null

相關問題