У меня есть приложение С#, которое использует файл конфигурации для доступа к значениям. Я хочу получить значения из этого файла конфигурации на основе значения переменной.
Вот файл конфигурации:
<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 intCurDay = DateTime.Now.Day;
пытаясь извлечь ключ, соответствующий конкретному intCurDay, пытался сделать это двумя способами, но не смог понять.
int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings["{0}"],intCurDay)
int valueToUse = Convert.ToInt32(ConfigurationManager.AppSettings["\"" + intCurDay + "\"")
Ответ 1 · рейтинг 3 · D Stanley
Это должно работать:
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 + ""])
Ответ 2 · Wolfman
Я не знаю с ключами, но для получения переменных из файла App.config лучше использовать этот способ, System.Configuration.ConfigurationManager.AppSettings устарел:
<applicationSettings>
<nameOfNamespace.nameOfSettingsFile>
<setting name="MAX_TRIES" serializeAs="String">
<value>5</value>
</setting>
</nameOfNamespace.nameOfSettingsFile>
</applicationSettings>
Вы можете создать файл .settings в VS, добавив в проект новый элемент и выбрав файл настроек (его вид - шестеренка) и создать переменные там, а не в файле App.config.
Тогда вы можете легко использовать это:
int MAX_TRIES = nameOfNamespace.nameOfSettingsFile.Default.MAX_TRIES;