[C#] appSettings 키가 있는지 확인하는 방법?

응용 프로그램 설정을 사용할 수 있는지 확인하려면 어떻게합니까?

즉 app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key ="someKey" value="someValue"/>
  </appSettings>
</configuration>

그리고 코드 파일에서

if (ConfigurationManager.AppSettings.ContainsKey("someKey"))
{
  // Do Something
}else{
  // Do Something Else
}



답변

MSDN : Configuration Manager.AppSettings

if (ConfigurationManager.AppSettings[name] != null)
{
// Now do your magic..
}

또는

string s = ConfigurationManager.AppSettings["myKey"];
if (!String.IsNullOrEmpty(s))
{
    // Key exists
}
else
{
    // Key doesn't exist
}


답변

if (ConfigurationManager.AppSettings.AllKeys.Contains("myKey"))
{
    // Key exists
}
else
{
    // Key doesn't exist
}


답변

제네릭과 LINQ를 통해 안전하게 기본값을 반환했습니다.

public T ReadAppSetting<T>(string searchKey, T defaultValue, StringComparison compare = StringComparison.Ordinal)
{
    if (ConfigurationManager.AppSettings.AllKeys.Any(key => string.Compare(key, searchKey, compare) == 0)) {
        try
        { // see if it can be converted.
            var converter = TypeDescriptor.GetConverter(typeof(T));
            if (converter != null) defaultValue = (T)converter.ConvertFromString(ConfigurationManager.AppSettings.GetValues(searchKey).First());
        }
        catch { } // nothing to do just return the defaultValue
    }
    return defaultValue;
}

다음과 같이 사용됩니다 :

string LogFileName = ReadAppSetting("LogFile","LogFile");
double DefaultWidth = ReadAppSetting("Width",1280.0);
double DefaultHeight = ReadAppSetting("Height",1024.0);
Color DefaultColor = ReadAppSetting("Color",Colors.Black);


답변

var isAlaCarte =
    ConfigurationManager.AppSettings.AllKeys.Contains("IsALaCarte") &&
    bool.Parse(ConfigurationManager.AppSettings.Get("IsALaCarte"));


답변

찾고있는 키가 구성 파일에 없으면 값이 null이고 “개체 참조가 설정되지 않기 때문에 .ToString ()을 사용하여 문자열로 변환 할 수 없습니다. 오류가 발생했습니다 “오류가 발생했습니다. 문자열 표현을 얻으려면 먼저 값이 존재하는지 확인하는 것이 가장 좋습니다.

if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["myKey"]))
{
    String myKey = ConfigurationManager.AppSettings["myKey"].ToString();
}

또는 코드 원숭이가 제안한 것처럼 :

if (ConfigurationSettings.AppSettings["myKey"] != null)
{
// Now do your magic..
}


답변

키 유형을 알고 있으면 구문 분석을 시도하면 상단 옵션이 모든 방식에 유연합니다.
bool.TryParse(ConfigurationManager.AppSettings["myKey"], out myvariable);


답변

LINQ 표현이 가장 좋을 것 같습니다.

   const string MyKey = "myKey"

   if (ConfigurationManager.AppSettings.AllKeys.Any(key => key == MyKey))
          {
              // Key exists
          }