2013-08-06 37 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;