根据变量从配置文件中检索值

时间:2013-08-06 17:49:32

标签: c# variables config configurationmanager appsettings

我有一个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 + "\"")

2 个答案:

答案 0 :(得分: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 + ""])

答案 1 :(得分: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;