using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Configuration; using System.Xml; namespace CustomConfig { public class MailServerConfigHandler:IConfigurationSectionHandler { public object Create(object parent, object configContext, System.Xml.XmlNode section) { MailServerConfig config = new MailServerConfig(); config.Provider = section.Attributes["provider"] == null ? "" : section.Attributes["provider"].Value; foreach (XmlNode child in section.ChildNodes) { MailServer server = new MailServer(); server.Client = child.Attributes["client"] == null ? "" : child.Attributes["client"].Value; foreach (XmlNode grandChild in child.ChildNodes) { server.ServerNode.Add(grandChild.Name, grandChild.InnerText); } config.Add(server); } return config; } } public class MailServer { private Hashtable serverNode; public MailServer() { serverNode = new Hashtable(); } public Hashtable ServerNode { get { return serverNode; } } public string Client { get; set; } public string Address { get { return serverNode["address"] as string; } } public string UserName { get { return serverNode["username"] as string; } } public string Password { get { return serverNode["password"] as string; } } } public class MailServerConfig : List<MailServer> { public string Provider { get; set; } } }
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="mailServerGroup" type="CustomConfig.MailServerConfigHandler,CustomConfig"/> </configSections> <mailServerGroup provider="www.edong.com"> <mailServer client="forum.tracefact.net"> <address>addr1</address> <userName>user1</userName> <password>pwd1</password> </mailServer> <mailServer client="blog.tracefact.com"> <address>addr2</address> <userName>user2</userName> <password>pwd2</password> </mailServer> </mailServerGroup> </configuration>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using CustomConfig; using System.Configuration; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { example(); } private static void example() { MailServerConfig serverGroup = (MailServerConfig)ConfigurationManager.GetSection("mailServerGroup"); Console.WriteLine("provider:\t"+serverGroup.Provider); foreach (MailServer config in serverGroup) { Console.WriteLine("-------------------------------"); Console.WriteLine("client:\t"+config.Client); Console.WriteLine("address:\t"+config.Address); Console.WriteLine("userName:\t"+config.UserName); Console.WriteLine("password:\t"+config.Password); } Console.ReadKey(); } } }
时间: 2024-10-26 01:31:56