2009-03-31 5 views
4

.Net 3.5 (Windows) 서비스에서 구성 파일에 작은 값 모음을 저장하고 싶습니다. 기본적으로 관리자가이 작은 컬렉션에서 값을 추가하고 제거 할 수 있어야합니다. 작은 값의 컬렉션을 저장하기 위해 config 파일에 무엇을 추가해야합니까? C#에서 컬렉션을 읽으려면 어떻게해야합니까? 나는 C#을 방법은 매우 유사하거나 동일 확신하기 때문에, 내가 VB.NET의 방법을 설명 할 것이다구성 파일에 값 모음을 저장하십시오.

<Illegal Characters> 
    <CustomCollection value="?"/> 
    <CustomCollection value="#"/> 
    <CustomCollection value=","/> 
</Illegal Characters> 

답변

3

값을 목록 here으로로드하는 사용자 지정 구성 섹션 처리기를 만드는 방법에 대한 좋은 기사가 있습니다.

기본적으로 당신의 IConfigurationSectionHandler 's은 (는) 다음과 비슷한 모습이 될 것입니다 방법을 만들기 :

public object Create(object parent, object configContext, XmlNode section) 
{ 
    IList<string> illegal = new List<string>(); 
    XmlNodeList processesNodes= section.SelectNodes("CustomCollection"); 

    foreach (XmlNode child in processesNodes) 
    { 
     illegal.Add(child.Attributes["value"].InnerText); 
    } 
    return illegal; 
} 
0

:

내가 찾고 있어요 컬렉션이 같은 데이터이며, 명확히하기 위해 일부 경우에. 솔루션 탐색기의 내 프로젝트에서 settings.settings 파일을 엽니 다. 원하는 설정 (예 : "OutputPath")을 추가하십시오. 그런 다음 코드에서 값의 수는 그와 관련된 이름이 고정되어 작고 경우 appSettings는 구성 섹션에 저장 할 수 있어야

variable = My.Settings.OutputPath 

' If a user modifiable setting, you can use: 
My.Settings.OutputPath = variable 
My.Settings.Save() 
1

그것을 참조하고 ConfigurationManager를 사용하여 참조 .AppSettings 컬렉션. 이것은 표준 키 - 값 쌍에 대해 꽤 잘 작동합니다. 데이터가 그보다 복잡하다면 자신 만의 구성 섹션을 정의하고 연결된 ConfigurationSectionHandler을 사용하여 원하는 모든 사용자 정의 개체로 데이터를 구문 분석 할 수 있습니다. FileSystemWatcher을 구현하여 새로운 구성을 적용하기 위해 서비스 시작/중지가 허용되지 않는 한 구성 파일의 변경 사항을 감지하고 실행중인 응용 프로그램의 구성을 업데이트하는 것이 좋습니다.

2

대신에 불법 문자의 단일 문자열을 구성 파일에 정규 표현식으로 저장할 수 있습니다. 그렇게하면 주어진 문자열에서 사용되는 문자를 확인하기 위해 문자를 반복 할 필요가 없습니다. 정규식을 기반으로 비교할 수 있습니다. 약간의 CPU와 복잡성을 줄일 수 있습니다.

물론 관리자가 직접 파일을 편집하려는 경우 개별 XML 노드를 사용하는 것이 더 쉽습니다. 그러나 응용 프로그램 자체를 통해 문자 목록을 변경하는 경우 정규식이 좋을 수 있습니다.

관련 문제