2009-11-20 3 views
14

저는 .NET 3.5를 실행하는 C# 초보자이며 App.config에 많은 응용 프로그램 기본값을 저장하고 싶습니다. 설정은 서버 환경에 따라 다를 수 있습니다. (예 : 개발, 준비, 생산). 내가하고 싶은 일은 this StackOverflow article에 설명 된 것과 비슷하지만 문자열이 아닌 값 (예 : int, bool)을 사용할 수 있기를 원합니다. (BTW 이름 값을 그냥 예입니다) 이런 식으로 뭔가 :App.config를 사용하여 강력한 형식의 변수 설정

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <applicationSettings> 
     <MyApp> 
      <setting name="InitText" serializeAs="String"> 
       <value>Hello</value> 
      </setting> 
      <setting name="StartAt" serializeAs="Integer"> 
       <value>5</value> 
      </setting> 
      <setting name="IsWeekend" serializeAs="Boolean"> 
       <value>True</value> 
      </setting> 
     </MyApp> 
    </applicationSettings> 
</configuration> 

누군가가이 작업을 수행하는 방법의 예를 제공 할 수있는 방법과 C#을 통해 값을 검색 할? and를 사용해야하는 많은 예제를 보았습니다.하지만 필자가 필 요한 요소가 필요한지, 필 요한 경우 필 요한 것인지 잘 모르겠습니다.

답변

28

.NET Framework의 Application Settings architecture을 사용하면 어떨까요? 기본값에 대한 강력한 액세스 권한을 가질 수 있습니다.

Windows 응용 프로그램 프로젝트의 경우 설정 파일이 Resources 폴더에 자동으로 만들어집니다. 그런 다음 질문에 표시된 것처럼 App.config 파일에 유지되는 응용 프로그램 설정을 추가 할 수 있습니다. 예를 들어

:

int i = Settings.Default.IntSetting; 

bool b = Settings.Default.BoolSetting; 

편집 : 프로젝트는 설정이 항상 새 항목을 추가 한 후 설정 파일을 선택하여 하나를 추가 할 수 있습니다 파일을 포함하지 않는 경우. (프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 추가 -> 새 항목 -> 설정 파일). 제 경우에는 설정이라는 이름을 지었지만 원하는대로 이름을 지정할 수 있습니다.

파일을 추가하면 Visual Studio에서 강력한 형식의 설정을 추가 할 수있는 설정 디자이너가 열립니다. 사용자가 말한대로 사용자가 아닌 응용 프로그램 범위에서 설정을 지정해야합니다. 그런 다음 프로젝트를 빌드하면 파일 이름이있는 클래스에 액세스해야합니다.

+0

이것이 내가 필요한 것이라고 생각하지만 C#을 통해 변수에 액세스 할 수 없습니다. '설정'을 입력하면 Intellisense는 아무 것도 볼 수 없습니다 ... –

+1

프레임 워크에 실제로 구워진 것은 아니며 오히려 IDE입니다. C#/VB 프로젝트에'.settings' 파일을 추가하면 설정 셋을 적절한 타입의 프로퍼티로 감싸는'Settings' 클래스 용 코드를 생성하는 데 사용되며, 필요한 모든 캐스트 등을 수행합니다. –

+0

설명 - 고맙습니다. –

11
Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"]) 
+6

또는 Boolean.TryParse (...). http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx –

+8

요구 사항의 "강력한 형식의 변수"부분에 오류가 발생하지 않으면 여전히 응용 프로그램에 문자열을 저장하고 있습니다. .config –

+0

예, 적절한 유형으로 문자열을 재 작성하지 않아도됩니다. –

2

JayG가 제안한 사항은 Visual Studio에서 자동으로 수행 할 수 있습니다. appsettings 마법사 as described in the MSDN을 사용하십시오. 또한 전체 Application Settings 인프라를 읽을 가치가있을 수도 있습니다.

-1

사용자가 <configSection> 사용자 지정을 원하는 것 같습니다. 기본적으로 다음과 같이 작동합니다 :

- 적절한 기본값 등을 가진 구성 클래스를 만들고 멋진 상속 구조를 설정하여 web.config 설정에 따라 자동으로로드합니다. - .NET Framework에서 초기화 할 항목을 알 수 있도록 설정을로드하는 "유형"을 지정하여 web.config에 구성 섹션을 추가하십시오.

MSDN library에서 모든 종류의 정보를 찾을 수 있습니다. 예제는 asp.net이지만 app configs에서도 잘 작동합니다.

+0

이 경우 사용자 정의 configSection을 작성할 필요가 없습니다. – BrainSlugs83