程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> .NET 配置文件簡單使用

.NET 配置文件簡單使用

編輯:C#入門知識

      當我們開發系統的時候要把一部分設置提取到外部的時候,那麼就要用到.NET的配置文件了。比如我的框架中使用哪個IOC容器需要可以靈活的選擇,那我就需要把IOC容器的設置提取到配置文件中去配置。實現有幾種方法。

1.使用appSettings

這個是最簡單的可以設置和讀取的用戶設置

簡單實用但是不夠優雅。

2.實現自己的配置節點

 
public class AgileFRConfigurationHandler: IConfigurationSectionHandler
    {
        public object Create(object parent, object configContext, XmlNode section)
        {
               
               var node =section.ChildNodes[0];
                if (node.Name != "objectContainer")
                    throw new ConfigurationErrorsException("不可識別的配置項", node);
            var config = new ObjectContainerElement();
                foreach (XmlAttribute attr in node.Attributes)
                {
                    switch (attr.Name)
                    {
                        case "provider":
                            config. Provider = attr.Value;
                            break;
                        case "iocModule":
                            config .IocModule = attr.Value;
                            break;
                        default:
                            throw new ConfigurationErrorsException("不可識別的配置屬性", attr);
                    }
                }
            }
            return config;
        }
 
//使用
 var config = ConfigurationManager.GetSection("agileFRConfiguration") as ObjectContainerElement;

這個方法看上去就略屌了,不過就是太麻煩了。

方法2:

繼承ConfigurationSection類,配合ConfigurationProperty特性來實現

 public class ObjectContainerElement : ConfigurationElement
    {
        [ConfigurationProperty("provider", IsRequired = true)]
        public string Provider
        {
            get
            {
                return (string)this["provider"];
            }
            set
            {
                this["provider"] = (object)value;
            }
        }
        [ConfigurationProperty("iocModule", IsRequired = false)]
        public string IocModule
        {
            get
            {
                return (string)this["iocModule"];
            }
            set
            {
                this["iocModule"] = (object)value;
            }
        }
    }

 /// <summary>
    /// 配置處理類
    /// </summary>
    public class AgileFRConfigurationHandler : ConfigurationSection
    {
        [ConfigurationProperty("objectContainer", IsRequired = true)]
        public ObjectContainerElement ObjectContainer
        {
            get
            {
                return (ObjectContainerElement)this["objectContainer"];
            }
            set
            {
                this["objectContainer"] = (object)value;
            }
        }
    }
//使用
var configurationHandler = (AgileFRConfigurationHandler)ConfigurationManager.GetSection("agileFRConfiguration");
var objectContainer=configurationHandler.ObjectContainer;
 
這個方法簡單優雅,我喜歡。
 

3.Settings.settings

這個方法我不太喜歡,它會自己生成配置文件對應的Class。不說了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved