Наследование: IConfigurationSectionHandler
 public object Create(object parent, object configContext, XmlNode section)
 {
     ArrayList list = new ArrayList();
     foreach (XmlNode node in section.ChildNodes)
     {
         if (((node.NodeType != XmlNodeType.Whitespace) && (node.NodeType != XmlNodeType.Comment)) && ((node.NodeType == XmlNodeType.Element) && node.Name.Equals("dataObjectMapping")))
         {
             SingleTagSectionHandler handler = new SingleTagSectionHandler();
             Hashtable hashtable = (Hashtable) handler.Create(null, null, node);
             if (hashtable != null)
             {
                 string fromDataFormat = (string) hashtable["fromDataFormat"];
                 if ((fromDataFormat != null) && (fromDataFormat.Length != 0))
                 {
                     string toDataFormat = (string) hashtable["toDataFormat"];
                     if ((toDataFormat != null) && (toDataFormat.Length != 0))
                     {
                         string typeName = (string) hashtable["type"];
                         if ((typeName != null) && (typeName.Length != 0))
                         {
                             list.Add(new DataObjectMappingInfo(fromDataFormat, toDataFormat, typeName));
                         }
                     }
                 }
             }
         }
     }
     return list;
 }
Пример #2
0
 private void ParseNode( Object parent, Object context, XmlNode node, Hashtable config, String prefix )
 {
     foreach ( XmlNode item in node.ChildNodes ) {
         if ( item.NodeType.Equals(XmlNodeType.Element) ) {
             String sectionname = String.Concat(prefix, "/", item.Name);;
             switch ( item.Name ) {
                 case "general":
                 case "login":
                 case "message":
                 case "inbox":
                     SingleTagSectionHandler singlesection = new SingleTagSectionHandler();
                     InitConfigSection(config, sectionname, singlesection.Create(parent, context, item) as System.Collections.Hashtable);
                     break;
                 case "read":
                 case "send":
                     if ( item.HasChildNodes )
                         ParseNode( parent, context, item, config, sectionname );
                     break;
                 case "servers":
                     if ( item.HasChildNodes )
                         config.Add(sectionname, ParseConfigServers(item.ChildNodes));
                     break;
                 case "addressbook":
                     if ( !config.Contains(sectionname) )
                         config.Add(sectionname, new SortedList());
                     SortedList addressbooks = (SortedList)config[sectionname];
                     Hashtable tmpaddressbook = (Hashtable)(new System.Configuration.SingleTagSectionHandler()).Create(parent, context, item);
                     ListDictionary addressbook = new ListDictionary(new System.Collections.CaseInsensitiveComparer());
                     foreach ( String configitem in tmpaddressbook.Keys) {
                         addressbook.Add(configitem, tmpaddressbook[configitem]);
                     }
                     tmpaddressbook = null;
                     if ( addressbook.Contains("type") && !addressbook["type"].Equals("none") && addressbook.Contains("name") && !addressbooks.Contains(addressbook["name"]) ) {
                         if ( addressbook.Contains("pagesize") )
                             addressbook["pagesize"] = ParseConfigElement(addressbook["pagesize"].ToString(), 10);
                         else
                             addressbook["pagesize"] = 10;
                         addressbooks.Add(addressbook["name"], addressbook);
                         if ( addressbook.Contains("allowupdate") )
                             addressbook["allowupdate"] = ParseConfigElement(addressbook["allowupdate"].ToString(), false);
                         else
                             addressbook["allowupdate"] = false;
                     }
                     break;
             }
         }
     }
 }