using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
namespace Configuration
...{
public class UserDefinedConfig:System.Configuration.ConfigurationSection
...{
const string _author = "author";
const string _createddate = "createddate";
const string _connection = "connection";
const string _collection = "collection";
[ConfigurationProperty(_author, IsRequired = true)]
public string Author
...{
get ...{ return this[_author] as string; }
set ...{ this[_author] = value; }
}
[ConfigurationProperty(_createddate)]
public string CreatedDate
...{
get ...{ return this[_createddate] as string; }
set ...{ this[_createddate] = value; }
}
[ConfigurationProperty(_connection)]
public DataBaseConnectionElement Connection
...{
get ...{ return this[_connection] as DataBaseConnectionElement; }
set ...{ this[_connection] = value; }
}
[ConfigurationProperty(_collection, IsRequired = false)]
public UserDefinedConfigurationElementCollection Collection
...{
get ...{ return this[_collection] as UserDefinedConfigurationElementCollection; }
}
}
public class DataBaseConnectionElement : System.Configuration.ConfigurationElement
...{
const string _key = "key";
const string _tns = "tns";
const string _userid = "userid";
const string _password = "passWord";
[ConfigurationProperty(_key,IsKey=true)]
public string Key
...{
get ...{ return base[_key] as string; }
set ...{ base[_key] = value; }
}
[ConfigurationProperty(_tns,IsRequired=true)]
public string TNS
...{
get ...{ return base[_tns] as string; }
set ...{ base[_tns] = value; }
}
[ConfigurationProperty(_userid, IsRequired = true)]
public string UserID
...{
get ...{ return base[_userid] as string; }
set ...{ base[_userid] = value; }
}
[ConfigurationProperty(_passWord, IsRequired = true)]
public string PassWord
...{
get ...{ return base[_passWord] as string; }
set ...{ base[_passWord] = value; }
}
}
public class UserDefinedConfigurationElementCollection : System.Configuration.ConfigurationElementCollection
...{
protected override ConfigurationElement CreateNewElement()
...{
return new DataBaseConnectionElement();
}
protected override object GetElementKey(ConfigurationElement element)
...{
return ((DataBaseConnectionElement)element).Key;
}
}
}
vs 配置:
System.Configuration.Configuration conf = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(this.Request.ApplicationPath);
conf.Sections.Add("CustomConfig", new Configuration.UserDefinedConfig());
conf.Save();
<?XML version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="CustomConfig" type="Configuration.UserDefinedConfig, Configuration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<CustomConfig author="abyliver.zhang">
<collection>
<add key="aa1" tns="aa2" userid="aa3" passWord="aa4"/>
<add key="bb1" tns="bb2" userid="bb3" passWord="bb4"/>
</collection>
</CustomConfig>
</configuration>
vs 讀取:
System.Collections.IEnumerator em = (System.Configuration.ConfigurationManager.GetSection("CustomConfig") as Configuration.UserDefinedConfig).Collection.GetEnumerator();
while(em.MoveNext())
...{
this.lblConfiguration.Text += ((Configuration.DataBaseConnectionElement)em.Current).Key + " - ";
}
參考:
http://www.antardev.cn/showArticle.ASP?id=44
http://www.cnblogs.com/SW515/archive/2006/08/21/482411.Html
進階:
SerializableConfigurationSection