-------------------------
1. 实现目的
我希望在web.config中,配置网站信息,管理员信息,和用户信息(当然这个配置有点不切实际了,这里只是为了演示),所以,我希望按下面的格式做配置。
接下来我要定义几个类,分别代表各个不同的节点。有一定的规则:
代表根节点,也就是siteSetting节点的类,继承自ConfigurationSection类
代表单一子节点的siteAdmin, siteUser类,继承自ConfigurationElement类
包含多个同名子节点的siteUsers类,继承自ConfigurationElementCollection类
而siteSetting这个配置点需要注册,代码示例如下:
<configSections>
<section name="siteSetting" type="处理程序" />
</configSections>
2、实现过程
第一步:实现单一节点的类,也就是代表siteAdmin和siteUser的类:
1
public class SiteAdmin : ConfigurationElement
2
}
第二步:实现包含多个同名节点(siteUser)的siteUsers类2
1
public class SiteUsers : ConfigurationElementCollection
2
第三步:实现根节点类2
1
public class SiteSetting : ConfigurationSection
2
}
完成上面的步骤后,就可以在web.config里注册相应的节了。如2
1
<configSections>
2
<section name="siteSetting" type="SiteSetting"/>
3
</configSections>
4
<siteSetting siteName="McJeremy的测试" siteVersion="1.0" closed="false">
5
<siteAdmin adminId="11" adminName="McJeremy" />
6
<siteUsers>
7
<siteUser userId="1" userName="McJeremy" />
8
<siteUser userId="2" userName="McJeremy3" />
9
<siteUser userId="5" userName="McJeremy4" />
10
</siteUsers>
11
</siteSetting>
为siteUsers节点添加一个子节点:2
3
4
5
6
7
8
9
10
11
1
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
2
SiteSetting myset = config.GetSection("siteSetting") as SiteSetting;
3
SiteUser user = new SiteUser();
4
user.UserName = "McJeremy4";
5
user.UserId = 5;
6
myset.SiteUsers.Add(user);
7
// myset.SiteUsers.Remove(6); 删除子节点
8
config.Save();
9
addMySettingsResult.Text = "添加成功";
读取siteSettings下的设置:2
3
4
5
6
7
8
9
1
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
2
SiteSetting myset = config.GetSection("siteSetting") as SiteSetting;
3
string msgs = "";
4
msgs += "<br />站点信息是:" + myset.SiteName + ",站点版本:" + myset.SiteVersion ;
5
SiteAdmin admin = myset.SiteAdmin;
6
msgs += "<br />管理员名:" + admin.AdminName;
7
msgs += "<br />用户信息:";
8
SiteUsers users = myset.SiteUsers;
9
foreach(SiteUser user in users)
10
msgs;
2
3
4
5
6
7
8
9
10