2013-08-06 78 views
0

我有一個使用配置文件訪問值的c#應用程序。 我正在尋找基於變量的值從這個配置文件檢索值。從基於變量的配置文件中檢索值

這裏是一個配置文件:

<appsettings> 
    <add key="1" value="10"/> 
    <add key="2" value="20"/> 
    <add key="3" value="30"/> 
    <add key="4" value="40"/> 
    <add key="5" value="40"/> 
    <add key="6" value="60"/> 
    <add key="7" value="70"/> 
    <add key="8" value="80"/> 
    <add key="9" value="90"/> 
</appsettings> 

我宣佈我的節目一個變量,它代表該月的一天INT。

int intCurDay = DateTime.Now.Day; 

試圖提取出對應於特定intCurDay鑰匙,試着做這兩種方式,像這樣,但不能弄明白。

int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings["{0}"],intCurDay) 
int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings["\"" + intCurDay + "\"") 

回答

3

這應該工作:

int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings[intCurDay.ToString()]); 

其他方法(不推薦 - 只是讓你看到你的第一次嘗試了問題):

int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings[string.Format("{0}",intCurDay)]); 

int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings["" + intCurDay + ""]) 
+0

你在你的最後一行缺少「]」。 – Khan

+0

@JefferyKhan謝謝 - 修正。 –

+0

+1顯示不建議,甚至更多功勞編輯原始帖子。 AppSettings部分正在啓動我的OCD。 :) – Khan

0

我不知道有鑰匙,但是爲了使App.config文件中的變量更好地使用這種方式,System.Configuration.ConfigurationManager.AppSettings已棄用:

<applicationSettings> 
    <nameOfNamespace.nameOfSettingsFile> 
    <setting name="MAX_TRIES" serializeAs="String"> 
     <value>5</value> 
    </setting> 
    </nameOfNamespace.nameOfSettingsFile> 
</applicationSettings> 

您可以在VS中創建一個.settings文件,在項目中添加一個新元素並選擇設置文件(其外觀是齒輪),並在那裏創建變量而不是在App.config文件中。

然後你就可以輕鬆地使用此:

int MAX_TRIES = nameOfNamespace.nameOfSettingsFile.Default.MAX_TRIES;