2009-04-08 2 views
3

.NET의 사용자 지정 구성과 관련된 간단한 예제가 있습니다. 제 경우는 중첩 된 노드로 인해 좀 더 복잡합니다..NET의 사용자 지정

나는 구성 파일에서이 글을 읽을 수 있도록하고 싶습니다 : 사람이 그것에 대해 몇 가지 코드를 제공 할 수

<environments> 

<environment name="live" url="http://www.live.com"> 
    <server name="a" IP="192.168.1.10"></server> 
    <server name="b" IP="192.168.1.20"></server> 
    <server name="c" IP="192.168.1.30"></server>  
</environment> 

<environment name="dev" url="http://www.dev.com"> 
    <server name="a" IP="192.168.1.10"></server> 
    <server name="c" IP="192.168.1.30"></server> 
</environment> 

<environment name="test" url="http://www.test.com"> 
    <server name="b" IP="192.168.1.20"></server> 
    <server name="d" IP="192.168.1.40"></server> 
</environment></environments> 

경우, 나는 그것을 감사하겠습니다.

감사합니다!

답변

9

ConfigurationElement 클래스에서 상속 된 사용자 지정 구성 클래스를 구현하여이 내용을 읽을 수 있습니다.

public class EnvironmentElement: ConfigurationElementCollection 
{ 
    protected override ConfigurationElement CreateNewElement(string elementName) 
    { 
     return new ServerElement(...); 
    } 
} 
+0

감사 피터, 당신은에 가서 다른 클래스를 작성하시기 바랍니다 수 있습니까? 모든 것을 유선으로 연결하는 방법은 매우 혼란 스럽습니다./ –

+0

시작하기에 충분합니까? :) –

+0

물론, 고마워. 나는 여기에서 따르려고 노력할 것이다. 다시 한번 감사드립니다. –

1

이 예는 도움이 될 수 있습니다 :

public class ServerElement: ConfigurationElement 
{ 
    [ConfigurationProperty("name", IsRequired = true, IsKey = true)] 
    public string Name 
    { 
     get { return ((string)base["name"]); } 
     set { base["name"] = value; } 
    } 

    ... 
} 

환경 요소가 실제로 모음과 같이 구현 될 수있다 : 여기

는 "서버"요소의 예입니다 To create a custom configuration section handler (MSDN)

+1

고맙지 만 예제에는 내 것과 같은 시나리오가 없습니다 ... 간단한 예제가 많이 있지만 중첩 된 노드가 없습니다. –

6

구성 파일의 사용자 지정 구성 섹션을 처리하기 위해 일부 클래스를 만들어야합니다.

이에 필 Haack에 의해 아주 좋은 블로그 항목이있다 : Custom Configuration Sections in 3 Easy Steps.

편집 : 나는 이것을 달성하는 방법은 과거에 사용했던 코드 프로젝트 문서를 찾기 위해 노력했다

, 여기

을 그것이 중첩 된 요소와 컬렉션을 처리하는 데 필요한 정보를 포함 Unraveling the Mysteries of .NET 2.0 Configuration

이다 : 나는 필의 블로그 항목에 그것을 발견했습니다.

+0

감사하지만이 예제에는 중첩 된 요소가 없습니다 .... –

0

구성 파일을 동적으로 읽는 대신 예제 (다른 준비 환경을 목표로 함)의 내용을보고 answer to an earlier question에 표시된대로 web deployment projects을 볼 수 있습니다.

그들은 설정 대신 배치시 병합 처리 : 당신이 서비스 계정 암호와 연결 문자열 같은 민감한 정보를 가지고 특히, 좋은 생각을 ... 내가 최근에 건너 온

7

맵시 도구는 Configuration Section Designer까지 코드 플렉스에있다 ; 대단히 VS에 통합됩니다.

클래스, XML 스키마 등을 생성합니다. 권장 사항.

+1

뛰어난 도구가 있습니다. 나는 수동으로 일하는 것을 시도하는 몇 시간 후에 아무 문제없이 갈 것이다. 감사! – phloopy