App.config의 AppSettings를 통하여 손쉽게 configuration을 할 수 있습니다.
그렇지만 이는 일차원적인 KeyValuePair Collection 형태이다 보니 내용이 많아지면 혼돈이 찾아올 수 있습니다.
단적으로 복잡한 Hierarchy를 고려해서 key를 정의하다보면...
Xml을 특성을 살려 계층적인 형태로 config를 작성할 수 있다면.
<mailSettings> 설정에서 보듯이 훨씬 직관적이고 configuration을 이해하고 수정할 수 있을 겁니다.
이를 위한 Westwind.Utilities.Configuration이라는 NuGet이 있으므로 이를 활용하면 훨씬 정돈된 setting configuration을 가져갈 수 있을 것 같습니다.
최신버전 (2014-10-13)
NuGet의 사용법은 intro page에서 충분히 설명할 것이고, 그 용법은 충분히 손쉬울 것이므로
조금 도전 정신을 가지고 그 base를 찾아 보기로 했습니다.
System.Configuration 어셈블리에서 제공하는 class 들을 활용하니 손쉽게 구현할 수 있었습니다.
ConfigurationSection, ConfigurationElement class를 이용하면 됩니다.
쉽게 ConfigurationSection은 Parent, ConfigurationElement 은 자식 요소라고 보면 될 것 같습니다.
각각의 class를 상속한 class를 만들고,
config file을 통해서 획득할 값을 ConfigurationPropertyAttribute를 통해서 설정하면 됩니다.
추가적으로 ValidationAttribute를 이용해 유효성 검사를 할 수 있습니다.
코드로 보는 게 빠를 듯 합니다. :)
.Net에서 config 파일의 attribute는 humel표기법을 따르므로 노출할 property명은 소문자로 시작합니다.
DefaultValue를 통해서 기본값을 설정하거나 Validator를 이용하여 최소 최대 값등을 설정할 수 있습니다.
section의 type 부분에 class와 project명을 명시해줍니다.
appSettings로 선언한 것을 직접 비교하지는 않았지만 훨씬 직관적인 것을 알 수 있습니다.
위의 구현만으로 Intellisense의 도움을 받을 수는 없습니다.
이는 VisualStudio의 config 파일을 손대는 등의 방법이 필요한 것으로 대략 파악했습니다.
References
http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.140).aspx
http://msdn.microsoft.com/ko-kr/library/windows/desktop/ackhksh7(v=vs.85).aspx
'Programming > .Net' 카테고리의 다른 글
(Workaround) return iterator with 'out' or 'ref' parameters (0) | 2015.02.16 |
---|---|
Select object within min or max property value. (0) | 2015.01.20 |
문서변환 (0) | 2014.11.05 |
Oracle Stored Procedure for .Net (0) | 2014.10.23 |
[NuGet] ImageResizer (0) | 2014.10.14 |