Подтвердить что ты не робот

Как получить все значения из ключа 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 };
}

Либо я делаю это неправильно, либо здесь что-то не хватает. Любая помощь будет действительно оценена.

4b9b3361

Ответ 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;
 }