Как получить все значения из ключа appsettings, который начинается с определенного имени и передать его любому массиву?
В моем web.config
файле у меня есть
<appSettings>
<add key="Service1URL1" value="http://managementService.svc/"/>
<add key="Service1URL2" value="http://ManagementsettingsService.svc/HostInstances"/>
....lots of keys like above
</appSettings>
Я хочу получить значение ключа, которое начинается с Service1URL
и передать значение string[] repositoryUrls = { ... }
в моем классе С#. Как я могу достичь этого?
Я пробовал что-то вроде этого, но не смог захватить значения:
foreach (string key in ConfigurationManager.AppSettings)
{
if (key.StartsWith("Service1URL"))
{
string value = ConfigurationManager.AppSettings[key];
}
string[] repositoryUrls = { value };
}
Либо я делаю это неправильно, либо здесь что-то не хватает. Любая помощь будет действительно оценена.
Ответы
Ответ 1
Я бы использовал немного LINQ:
string[] repositoryUrls = ConfigurationManager.AppSettings.AllKeys
.Where(key => key.StartsWith("Service1URL"))
.Select(key => ConfigurationManager.AppSettings[key])
.ToArray();
Ответ 2
Вы переписываете массив для каждой итерации
List<string> values = new List<string>();
foreach (string key in ConfigurationManager.AppSettings)
{
if (key.StartsWith("Service1URL"))
{
string value = ConfigurationManager.AppSettings[key];
values.Add(value);
}
}
string[] repositoryUrls = values.ToArray();
Ответ 3
Я определил класс для хранения интересующих меня переменных и перебора свойств и поиска в файле app.config.
Тогда я могу использовать экземпляр, как я желаю.
Мысли?
public static ConfigurationSettings SetConfigurationSettings
{
ConfigurationSettings configurationsettings = new ConfigurationSettings();
{
foreach (var prop in configurationsettings.GetType().GetProperties())
{
string property = (prop.Name.ToString());
string value = ConfigurationManager.AppSettings[property];
PropertyInfo propertyInfo = configurationsettings.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(configurationsettings, value, null);
}
}
return configurationsettings;
}