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

Как использовать ConfigurationManager

Я хочу использовать App.config для хранения некоторых параметров. Я попытался использовать следующий код для получения параметра из файла конфигурации.

private string GetSettingValue(string paramName)
{
    return String.Format(ConfigurationManager.AppSettings[paramName]);
}

Я также добавил System.Configuration для него (я использовал отдельный класс), а в файле App.config у меня есть:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key ="key1" value ="Sample" />
  </appSettings>
</configuration>

Но у меня возникла ошибка при попытке использовать ConfigurationManager - ConfigurationManager can't exist in such context, но я уже добавил System.Configuration. Или я что-то пропустил?

ИЗМЕНИТЬ

класс с конфигурацией (полный вид)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace browser
{
    class ConfigFile
    {
        private string GetSettingValue(string paramName)
        {
            return String.Format(ConfigurationManager.AppSettings[paramName]);
        }
    }
}

EDIT2

Добавьте, как выглядит

enter image description here

Это означает, что проблема не во время использования ConfigurationManger, а раньше - программа "говорит", что "не знает такого элемента", как я понимаю, ошибка - "Element ConfigurationManager" не существует в таком контексте "

EDIT3

enter image description here

EDIT 4

enter image description here

4b9b3361

Ответ 1

Хорошо, мне потребовалось некоторое время, чтобы увидеть это, но это никак не компилируется:

return String.(ConfigurationManager.AppSettings[paramName]);

Вы даже не вызываете метод типа String. Просто сделайте это:

return ConfigurationManager.AppSettings[paramName];

KeyValuePair AppSettings уже возвращает строку. Если имя не существует, оно вернет null.


Основываясь на ваших изменениях, вы еще не добавили ссылку в сборку System.Configuration для проекта, в котором вы работаете.

Ответ 2

Перейдите на tools >> nuget >> console и введите:

Install-Package System.Configuration.ConfigurationManager 

Если вы хотите конкретную версию:

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

Ваша ConfigurationManager dll теперь будет импортирована, и код начнет работать.

Ответ 3

Я нашел несколько ответов, но я не знаю, правильно ли это. На данный момент это мое решение. Вплоть до этого он не нарушил мой режим дизайна.

    `
    /// <summary>
    /// set config, if key is not in file, create
    /// </summary>
    /// <param name="key">Nome do parâmetro</param>
    /// <param name="value">Valor do parâmetro</param>
    public static void SetConfig(string key, string value)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var settings = configFile.AppSettings.Settings;
        if (settings[key] == null)
        {
            settings.Add(key, value);
        }
        else
        {
            settings[key].Value = value;
        }
        configFile.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
    }

    /// <summary>
    /// Get key value, if not found, return null
    /// </summary>
    /// <param name="key"></param>
    /// <returns>null if key is not found, else string with value</returns>
    public static string GetConfig(string key)
    {
        return ConfigurationManager.AppSettings[key];
    }`