读取配置config文件

1 <system.net>
2     <mailSettings>
3         <smtp from="[email protected]">
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 = "[email protected]";

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 }

下面是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         }

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>

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

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

时间: 2024-10-30 03:01:47

读取配置config文件的相关文章

实现快速读写配置文件的内容,可以用于读取*.exe.config文件或者Web.Config文件的内容,或者可以读取指定文件的配置项.

形如: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microso

PHP 后台程序配置config文件,及form表单上传文件

一,配置config文件 1获取config.php文件数组, 2获取form 表单提交的值 3保存更新config.php文件,代码如下: 1 $color=$_POST['color']; 2 $backtype=$_POST['backtype']; 3 4 $settings=include(dirname(__DIR__).'/config.php'); 5 6 $settings['themescolor']=(int)$color; 7 $settings['themesbackg

WCF客户端C#代码 配置config文件

不多说了,直接上代码吧.... 服务端Web.config文件中bindings配置 <bindings> <wsHttpBinding> <binding name="httpconf" closeTimeout="10:10:10" openTimeout="10:10:10" receiveTimeout="10:10:10" sendTimeout="10:10:10"

DNC读取配置Json文件到类中并在程序使用

ConfigurationBuilder 这个类提供了配置绑定,在dnc中 Program中WebHost提供了默认的绑定(appsettings文件) 如果我们需要加载我们自己的json配置文件怎么处理 var builder = new ConfigurationBuilder(); 这里builder 提供了很多添加的方式 1.第一种:直接添加json文件路径,这里需要注意的json文件地址问题 builder.AddJsonFile("path").Build(); 2.第二种

【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序

参考:http://blog.csdn.net 1. 2. 请求筛选中允许config文件下载, 3. 添加.config到 MIME类型. 3.注意:筛选项.

C#读取指定config文件

参考http://stackoverflow.com/questions/1682054/how-do-i-retrieve-appsettings-from-the-assembly-config-file ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = "SomeApp.config"; Configuration libConfig = Configurati

c# unity 读取配置json文件

using System; using LitJson; string configStr; void Start() { ArrayList info = LoadFile(Application.dataPath,"config1.txt"); foreach (string strs in info) { configStr += strs; } // string str = @" // { // ""Speed"" : 2 /

浅谈config文件的使用

一.缘起 最近做项目开始使用C#,因为以前一直使用的是C++,因此面向对象思想方面的知识还是比较全面的,反而是因没有经过完整.系统的.Net方面知识的系统学习,经常被一些在C#老鸟眼里几乎是常识的小知识点给绊倒. 为什么这么说呢,因为我在网络上查找的资料的时候,经常大部分问题,都是能够找到或多或少的参考资料,但是这些小知识点却很少能够找到正确的解决方法,有也是只有提问,没有回到,那么这种情况出现,就只有2种解释:1.这个方面的问题很难,难到没有人能够解决:2.这个问题太简单,简单到稍微熟悉的人都

微软ASP.NET网站部署指南(3):使用Web.Config文件的Transformations

1. 综述 大多数程序里都会在Web.config里设置參数,而且在部署的时候须要更改. 每次都手工更改这些配置非常乏味,也easy出错. 该章节将会告诉你假设通过自己主动化更新Web.config文件来避免这些问题. 2. Web.config Transformations 与Web Deploy Parameters 有2种方式来自己主动化更新Web.config文件的设置:Web.config transformations和Web Deploy parameters. Web.conf