• 读取配置config文件


    1 <system.net>
    2     <mailSettings>
    3         <smtp from="Fish.Q.Li@newegg.com">
    4             <network />
    5         </smtp>
    6     </mailSettings>
    7 </system.net>

    读取上面的xml代码{

    1 mtpSection section = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
    2 labMailFrom.Text = "Mail From: " + section.From;

    }

    写入配置文件:

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
    SmtpSection section = config.GetSection("system.net/mailSettings/smtp") as SmtpSection;
    section.From = "Fish.Q.Li@newegg.com2";
    
    config.Save();

    如果配置文件为以下格式的:

    <MySection444>
        <add key="aa" value="11111"></add>
        <add key="bb" value="22222"></add>
        <add key="cc" value="33333"></add>
    </MySection444>

    读取方法:

     1 public class MySection4 : ConfigurationSection    // 所有配置节点都要选择这个基类
     2 {
     3     private static readonly ConfigurationProperty s_property
     4         = new ConfigurationProperty(string.Empty, typeof(MyKeyValueCollection), null, 
     5                                         ConfigurationPropertyOptions.IsDefaultCollection);
     6     
     7     [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
     8     public MyKeyValueCollection KeyValues
     9     {
    10         get
    11         {
    12             return (MyKeyValueCollection)base[s_property];
    13         }
    14     }
    15 }
    16 
    17 
    18 [ConfigurationCollection(typeof(MyKeyValueSetting))]
    19 public class MyKeyValueCollection : ConfigurationElementCollection        // 自定义一个集合
    20 {
    21     // 基本上,所有的方法都只要简单地调用基类的实现就可以了。
    22 
    23     public MyKeyValueCollection() : base(StringComparer.OrdinalIgnoreCase)    // 忽略大小写
    24     {
    25     }
    26 
    27     // 其实关键就是这个索引器。但它也是调用基类的实现,只是做下类型转就行了。
    28     new public MyKeyValueSetting this[string name]
    29     {
    30         get
    31         {
    32             return (MyKeyValueSetting)base.BaseGet(name);
    33         }
    34     }
    35 
    36     // 下面二个方法中抽象类中必须要实现的。
    37     protected override ConfigurationElement CreateNewElement()
    38     {
    39         return new MyKeyValueSetting();
    40     }
    41     protected override object GetElementKey(ConfigurationElement element)
    42     {
    43         return ((MyKeyValueSetting)element).Key;
    44     }
    45 
    46     // 说明:如果不需要在代码中修改集合,可以不实现Add, Clear, Remove
    47     public void Add(MyKeyValueSetting setting)
    48     {
    49         this.BaseAdd(setting);
    50     }
    51     public void Clear()
    52     {
    53         base.BaseClear();
    54     }
    55     public void Remove(string name)
    56     {
    57         base.BaseRemove(name);
    58     }
    59 }
    60 
    61 public class MyKeyValueSetting : ConfigurationElement    // 集合中的每个元素
    62 {
    63     [ConfigurationProperty("key", IsRequired = true)]
    64     public string Key
    65     {
    66         get { return this["key"].ToString(); }
    67         set { this["key"] = value; }
    68     }
    69 
    70     [ConfigurationProperty("value", IsRequired = true)]
    71     public string Value
    72     {
    73         get { return this["value"].ToString(); }
    74         set { this["value"] = value; }
    75     }
    76 }
    View Code

    下面是demo方法

      1 public class EsbHeaders : ConfigurationElement
      2     {
      3         [ConfigurationProperty("children", IsDefaultCollection = true)]
      4         [ConfigurationCollection(typeof(EsbHeader), AddItemName = "header")]
      5         public EsbHeaderCollection Headers
      6         {
      7             get { return (EsbHeaderCollection)base["children"]; }
      8             set { base["children"] = value; }
      9         }
     10     }
     11 
     12     public class EsbHeaderCollection : ConfigurationElementCollection
     13     {
     14         protected override ConfigurationElement CreateNewElement()
     15         {
     16             return new EsbHeader();
     17         }
     18 
     19         protected override object GetElementKey(ConfigurationElement element)
     20         {
     21             return ((EsbHeader)element).Identity;
     22         }
     23 
     24 
     25         public new EsbHeader this[string key]
     26         {
     27             get { return (EsbHeader)base.BaseGet(key); }
     28         }
     29 
     30         public EsbHeader this[int index]
     31         {
     32             get { return (EsbHeader)base.BaseGet(index); }
     33         }
     34 
     35         public List<EsbHeader> ToList()
     36         {
     37             var list = new List<EsbHeader>();
     38             IEnumerator ie = this.GetEnumerator();
     39             while (ie.MoveNext())
     40                 list.Add(ie.Current as EsbHeader);
     41             return list;
     42         }
     43     }
     44 
     45     public class EsbHeader : ConfigurationElement, IRequestEntity
     46     {
     47         private string identity = string.Empty;
     48         [ConfigurationProperty("identity", IsRequired = false)]
     49         public string Identity
     50         {
     51             get
     52             {
     53                 if (identity == string.Empty)
     54                     return this.SERVICE_CODE;
     55                 else
     56                     return identity;
     57             }
     58             set { identity = value; }
     59         }
     60 
     61 
     62         [ConfigurationProperty("service", IsRequired = true)]
     63         public string SERVICE_CODE
     64         {
     65             get { return (string)base["service"]; }
     66             set { base["service"] = value; }
     67         }
     68 
     69         [ConfigurationProperty("version", IsRequired = true)]
     70         public string VERSION
     71         {
     72             get { return (string)base["version"]; }
     73             set { base["version"] = value; }
     74         }
     75 
     76         [ConfigurationProperty("consumer", IsRequired = true)]
     77         public string CONSUMER_CODE
     78         {
     79             get { return (string)base["consumer"]; }
     80             set { base["consumer"] = value; }
     81         }
     82 
     83         [ConfigurationProperty("password", IsRequired = true)]
     84         public string PASSWORD
     85         {
     86             get { return (string)base["password"]; }
     87             set { base["password"] = value; }
     88         }
     89 
     90         [ConfigurationProperty("desc", IsRequired = true)]
     91         public string Description
     92         {
     93             get { return (string)base["desc"]; }
     94             set { base["desc"] = value; }
     95         }
     96 
     97 
     98         [ConfigurationProperty("ext1", IsRequired = false)]
     99         public string EXT1
    100         {
    101             get { return (string)base["ext1"]; }
    102             set { base["ext1"] = value; }
    103         }
    104         [ConfigurationProperty("ext2", IsRequired = false)]
    105         public string EXT2
    106         {
    107             get { return (string)base["ext2"]; }
    108             set { base["ext2"] = value; }
    109         }
    110         [ConfigurationProperty("ext3", IsRequired = false)]
    111         public string EXT3
    112         {
    113             get { return (string)base["ext3"]; }
    114             set { base["ext3"] = value; }
    115         }
    View Code

    demo-config

     1 <sinosoft>
     2     <esb>
     3       <headers>
     4         <children>
     5           <header service="s-1" version="1" consumer="CS-1/65/" password="12436798" desc=""></header>
     6           <header service="s-2" version="1" consumer="CS-1/6" password="4235465687" desc=""></header>
     7           <header service="s-3" version="1" consumer="CS-1/-01" password="24346" desc=""></header>
     8 
     9         </children>
    10       </headers>
    11     </esb>
    12     <reports>
    13       <sms url="" userid="TCBB" password="456"></sms>
    14     </reports>
    15   </sinosoft>
    View Code

    小结:
    1. 为每个集合中的参数项创建一个从ConfigurationElement继承的派生类。
    2. 为集合创建一个从ConfigurationElementCollection继承的集合类,具体在实现时主要就是调用基类的方法。
    3. 在创建ConfigurationSection的继承类时,创建一个表示集合的属性就可以了,注意[ConfigurationProperty]的各参数。

    参考自:http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html#_labelStart

  • 相关阅读:
    Android中通过进程注入技术修改系统返回的Mac地址 分类: Android 2014-12-15 21:11 2866人阅读 评论(10) 收藏
    OC学习篇之---总结和学习目录 分类: IOS 2014-12-14 21:30 2623人阅读 评论(2) 收藏
    OC学习篇之---单例模式 分类: IOS 2014-12-14 20:42 1498人阅读 评论(2) 收藏
    OC学习篇之---对象的拷贝 分类: IOS 2014-12-14 18:02 2128人阅读 评论(0) 收藏
    OC学习篇之---循环引用问题 分类: IOS 2014-12-14 17:24 2184人阅读 评论(0) 收藏
    OC学习篇之---数组对象的引用计数问题和自动释放池的概念 分类: IOS 2014-12-14 17:04 1415人阅读 评论(0) 收藏
    OC学习篇之---@property和@synthesize的使用 分类: IOS 2014-12-14 16:45 3112人阅读 评论(0) 收藏
    OC学习篇之---内存管理介绍和使用 分类: IOS 2014-12-14 16:16 1510人阅读 评论(1) 收藏
    OC学习篇之---谓词(NSPredicate) 分类: IOS 2014-12-14 10:39 2078人阅读 评论(0) 收藏
    OC学习篇之---通知(NSNotificationCenter) 2014-12-14 10:20 2430人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/ithuo/p/5436097.html
Copyright © 2020-2023  润新知