C# 프로그래밍을 하다 보면 애플리케이션의 구성 설정을 파일에서 읽어와야 할 때가 있습니다. 이때 ConfigurationManager.AppSettings를 사용하면 손쉽게 구성 설정 값을 읽어올 수 있습니다. 하지만 때로는 오류가 발생하거나 예상대로 작동하지 않는 경우가 있습니다. 이러한 상황에서 MSDN에서 제안하는 대안적인 방법을 사용할 수 있습니다.
NameValueCollection 사용하기
ConfigurationManager.AppSettings를 사용하기 위해서는 먼저 System.Configuration 어셈블리를 참조에 추가해야 합니다. 이 과정은 프로젝트의 참조 설정에서 진행할 수 있습니다.
단계별 설정 방법
1. 어셈블리 참조 추가
솔루션 탐색기에서 프로젝트를 우클릭하고 [참조 추가]를 선택합니다.
[어셈블리] 탭에서 System.Configuration을 검색하고 체크한 다음 [확인]을 클릭하여 추가합니다.
2. 네임스페이스 사용 선언
파일 상단에 using System.Configuration;을 추가하여 ConfigurationManager 클래스에 쉽게 접근할 수 있도록 합니다.
3. 구성 설정 값 읽기
구성 파일(App.config 또는 Web.config)에 설정된 키와 값을 읽어오기 위한 함수를 구현합니다.
아래는 특정 섹션 이름의 값을 읽어오는 예제 함수입니다.
using System.Collections.Specialized;
using System.Configuration;
public class ConfigManager
{
public static string GetConfigValue(string sectionName)
{
string sectionValue = "";
NameValueCollection appSettings = ConfigurationManager.AppSettings;
for (int i = 0; i < appSettings.Count; i++)
{
if (appSettings.GetKey(i).Equals(sectionName))
{
sectionValue = appSettings[i];
break;
}
}
return sectionValue;
}
}
이 함수는 주어진 섹션 이름에 해당하는 값을 찾아 string 형태로 반환합니다.
반환된 string 값은 필요에 따라 적절한 타입으로 변환하여 사용할 수 있습니다.
예를 들어, 반환된 값을 int로 변환하려면 int.Parse() 메서드를 사용할 수 있습니다.
사용 예제
구성 파일(App.config)에 다음과 같이 설정이 추가되어 있다고 가정해 보겠습니다.
<appSettings>
<add key="MaxUserCount" value="100"/>
</appSettings>
애플리케이션에서 이 값을 읽어오려면 다음과 같이 호출합니다.
int maxUserCount = int.Parse(ConfigManager.GetConfigValue("MaxUserCount"));
이 방법을 통해 C# 애플리케이션에서 구성 설정 값을 손쉽게 읽어오고 활용할 수 있습니다.
ConfigurationManager.AppSettings의 사용이 어려울 때는 위에서 설명한 대로 NameValueCollection을 사용하는 방법을 시도해 보세요.
결론
C#에서 ConfigurationManager.AppSettings를 사용하여 애플리케이션의 구성 설정을 관리하는 것은 강력하고 유용한 방법입니다.
하지만 때때로 개발자는 설정 값을 읽어오는 과정에서 오류에 직면할 수 있습니다.
이러한 상황에서 System.Configuration 어셈블리를 참조에 추가하고, NameValueCollection을 활용하는 방식은 훌륭한 대안이 될 수 있습니다.
이 방법을 통해 개발자는 구성 파일에서 설정 값을 쉽고 안정적으로 읽어올 수 있으며, 읽어온 값은 필요에 따라 다양한 타입으로 변환하여 사용할 수 있습니다.
참고글
'Language > C# WPF' 카테고리의 다른 글
OpenCV Sharp Dll error 발생 시 해결방법 (0) | 2015.01.10 |
---|---|
[C#] 크로스 스레드 작업이 잘못되었습니다. 일때는 delegate, Involk를 사용하자. (0) | 2014.11.20 |
[C#] OS에 따른 Form크기의 자동 배율 조정 (0) | 2014.09.04 |
[C#] CultureInfo 이름찾아보기 (0) | 2014.07.06 |
[C#] 레지스트리 읽기/쓰기 ( RegistryKey ) (2) | 2014.07.05 |