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; }
}
}