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

C#讀取自定義的config

編輯:C#入門知識

今天說下C#讀寫自定義config文件的各種方法。由於這類文章已經很多,但是大多數人舉例子都是默認的在app.confg或者web.config進行讀寫,而不是一般的XML文件,我主要寫的是一般的Xml文件,不是默認路徑下的app.config.

通常,我們在.NET開發過程中,會接觸二種類型的配置文件:config文件,xml文件。今天我主要演示如何創建自己的自定義的配置節點,而不是介紹如何使用appSetting.

首先來看下配置節點。

 

  
  
  
   
   
   
  
   
 
  
  
   
  
 
  
   
  
  
  
  
   
  
  

 

 

 

 


 
 

這個配置具有一系列數據,這時候就要用到collection,代碼如下:

  MySection3 : ConfigurationSection    
{    
ConfigurationProperty s_property = ConfigurationProperty(.Empty, (TheKeyValueCollection), , Options = TheKeyValueCollection KeyValues
{
   (TheKeyValueCollection)     } }


[ConfigurationCollection((TheKeyValue))]
TheKeyValueCollection: ConfigurationElementCollection { TheKeyValue[ name]
  {        (TheKeyValue)   }
} ConfigurationElement CreateNewElement()
  {
  }   (
    ConfigurationElement element)
  { ((TheKeyValue)element).Key;
  }
}

TheKeyValue : ConfigurationElement {
  [ConfigurationProperty(, IsRequired = )]
  { { [ { [] =  }
[ConfigurationProperty(, IsRequired = )]
{ [ { [] = value; } }
  }
}

上面的三個class做了三件事:
1. 為每個集合中的參數項創建一個從ConfigurationElement繼承的派生類。
2. 為集合創建一個從ConfigurationElementCollection繼承的集合類,具體在實現時主要就是調用基類的方法。
3. 在創建ConfigurationSection的繼承類時,創建一個表示集合的屬性就可以了,注意[ConfigurationProperty]的各參數。

然後就是讀取config中的值,在讀取自定節點時,我們需要調用ConfigurationManager.GetSection()得到配置節點,並轉換成我們定義的配置節點類,然後就可以按照強類型的方式來訪問了。

                 (!                {

                     fileMap =  ExeConfigurationFileMap() { ExeConfigFilename = config == (MySection3 )config.GetSection(
                    MySection3  configSection = (MySection3 )ConfigurationManager.GetSection(
kv KeyValuesCast()
                                     { key=kvKey, val=kvValue)};

 我們在來看下section4的配置:

 


 
 

這個關於Collection的寫法和第三個差不多,不同之處在於屬性的定義是不同的。

  TheKeyValue : ConfigurationElement    
, IsRequired =   {  [ { [] =, IsRequired =   {  [ { [] =, IsRequired =   {  [ { [] =

然後是獲取相應的值:

  (!
 fileMap =  ExeConfigurationFileMap() { ExeConfigFilename = config == (MySection4 )config.GetSection(
                    MySection4  configSection = (MySection4 )ConfigurationManager.GetSection( values =  v  configSection.KeyValues.Cast<TheKeyValue> =v.Name, id=v.Id,role=v.Role)};

上面就是關於自定義section的一些分享,這裡還要說一下section裡面的type

關於這個type的定義,逗號前面ConfigApplicationDemo.MySection1, 需要對應你的namespace和你的section類的名字,逗號後面需要對應的是你編譯出來的dll的名字,很多情況下namespace和dll名字是一樣的,但是出現不一樣的情況一定要注意,不然type定義不好,或版本不對,會報錯,錯誤如下,程序會告訴你找不到指定的file或者section。

An error occurred creating the configuration section handler for XXX: Could not load type..

 

 

 

 

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