웹에서.config 및 app.config 파일에 사용자 정의 설정 노드 추가
- <sectionGroup name="enyim.com"><section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" /></sectionGroup>
또는:
- <configSections><section name="log4net" type="System.Configuration.IgnoreSectionHandler"/></configSections>
위에서 설정한 프로필이 나타나면'enyim.com'또는'log4net'이라는 노드를 찾을 수 있습니다. config 파일의 기본 노드에 속하지 않지만, 위의 설정을 통해 프로그램이 실행되면 오류가 발생하지 않습니다.이렇게 하면 관련 설정 정보도 분류하여 저장할 수 있다.여기서 주공은 간단한 예를 보여 준다. 이 예는 주공의 2006년부터 개발한 자용 소프트웨어(미화되지 않았기 때문에 무료로 발표하지 않았다)에서 유래한 것이다. 이 응용 프로그램의 connfig 파일에 나는 특유의 설정을 추가하여 자신의 노드, 앱을 추가했다.config 파일의 내용은 다음과 같습니다.
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="SoftwareSettings" type="ImageAssistant.Configuration.SoftwareSettings, ImageAssistant" />
- </configSections>
- <SoftwareSettings>
- <LoadSettings>
- <add key="LoadBmp" value="true"/>
- <add key="LoadJpg" value="true"/>
- <add key="LoadGif" value="true"/>
- <add key="LoadPng" value="false"/>
- </LoadSettings>
- <PathSettings SavePath="C:\ResizeImages\" SearchSubPath="true"/>
- </SoftwareSettings>
- <appSettings>
- <add key="LoadBmp" value="true"/>
- <add key="LoadJpg" value="true"/>
- <add key="LoadGif" value="true"/>
- <add key="LoadPng" value="false"/>
- <add key="IncludeSubPath" value="true"/>
- </appSettings>
-
- </configuration>
config 파일에서 우리는
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Configuration;
-
- // :zhoufoxcn( )
- // :2011-03-08
- //blog:http://blog.csdn.net/zhoufoxcn http://zhoufoxcn.blog.51cto.com
- // : , , 。
- namespace ImageAssistant.Configuration
- {
- public sealed class LoadSettingsCollection : ConfigurationElementCollection
- {
- private IDictionary<string, bool> settings;
-
- protected override ConfigurationElement CreateNewElement()
- {
- return new LoadSettingsElement();
- }
-
- protected override object GetElementKey(ConfigurationElement element)
- {
- LoadSettingsElement ep = (LoadSettingsElement)element;
-
- return ep.Key;
- }
-
- protected override string ElementName
- {
- get
- {
- return base.ElementName;
- }
- }
-
- public IDictionary<string, bool> Settings
- {
- get
- {
- if (settings == null)
- {
- settings = new Dictionary<string, bool>();
- foreach (LoadSettingsElement e in this)
- {
- settings.Add(e.Key, e.Value);
- }
- }
- return settings;
- }
- }
-
- public bool this[string key]
- {
- get
- {
- bool isLoad = true;
- if (settings.TryGetValue(key, out isLoad))
- {
- return isLoad;
- }
- else
- {
- throw new ArgumentException(" '" + key + "' 。");
- }
- }
- }
-
- }
-
- public class LoadSettingsElement : ConfigurationElement
- {
- [ConfigurationProperty("key", IsRequired = true)]
- public string Key
- {
- get { return (string)base["key"]; }
- set { base["key"] = value; }
- }
- [ConfigurationProperty("value", IsRequired = true)]
- public bool Value
- {
- get { return (bool)base["value"]; }
- set { base["value"] = value; }
- }
- }
-
- public class PathSettingElement : ConfigurationElement
- {
- /// <summary>
- ///
- /// </summary>
- [ConfigurationProperty("SavePath", IsRequired = true)]
- public string SavePath
- {
- get { return (string)base["SavePath"]; }
- set { base["SavePath"] = value; }
- }
- /// <summary>
- ///
- /// </summary>
- [ConfigurationProperty("SearchSubPath", IsRequired = false, DefaultValue = true)]
- public bool SearchSubPath
- {
- get { return (bool)base["SearchSubPath"]; }
- set { base["SearchSubPath"] = value; }
- }
- }
-
- /// <summary>
- /// config
- /// </summary>
- public sealed class SoftwareSettings : ConfigurationSection
- {
- /// <summary>
- /// SoftwareSettings LoadSettings
- /// </summary>
- [ConfigurationProperty("LoadSettings", IsRequired = true)]
- public LoadSettingsCollection LoadSettings
- {
- get { return (LoadSettingsCollection)base["LoadSettings"]; }
- }
-
- /// <summary>
- /// SoftwareSettings PathSettings ,
- /// </summary>
- [ConfigurationProperty("PathSettings", IsRequired = false)]
- public PathSettingElement PathSetting
- {
- get { return (PathSettingElement)base["PathSettings"]; }
- set { base["PathSettings"] = value; }
- }
-
- }
- }
위 코드에서 ConfigurationProperty라는 속성을 볼 수 있습니다. 이것은 대응하는 속성이 config 파일에 있는 속성 이름을 표시하고, IsRequired는 필요한 속성인지, DefaultValue는 속성의 기본값을 표시합니다.처음에 우리는 다음과 같은 관계를 주의해야 한다. Software Settings: 루트 노드는 Configuration Section에서 계승된다.LoadSettingsCollection: 하위 노드의 집합으로ConfigurationElementCollection에서 계승됩니다.LoadSettingsElement: 하위 노드, ConfigurationElement에서 상속됩니다.PathSettingElement: 하위 노드, ConfigurationElement에서 상속됩니다.아래 코드를 작성한 후에 우리는 또 위의 클래스를 어떻게 사용해야 합니까?사실은 매우 간단하다.
- class Program
- {
- static void Main(string[] args)
- {
- SoftwareSettings softSettings = ConfigurationManager.GetSection("SoftwareSettings") as SoftwareSettings;
-
- foreach (string key in softSettings.LoadSettings.Settings.Keys)
- {
- Console.WriteLine("{0}={1}", key, softSettings.LoadSettings[key]);
- }
- Console.WriteLine("SavePath={0},SearchSubPath={1}", softSettings.PathSetting.SavePath, softSettings.PathSetting.SearchSubPath);
- Console.ReadLine();
- }
- }
이 프로그램의 실행 결과는 다음과 같습니다: LoadBmp=True LoadJpg=True LoadGif=True LoadPng=False SavePath=C:\ResizeImages\,SearchSubPath=True
총괄: 위의 config 파일에서
주공2011-03-08
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.