private static void Save(Configuration configFil, IConfiguration config)
 {
     if (config is ConfigurationCollection)
     {
         ConfigurationCollection collection = config as ConfigurationCollection;
         foreach (IConfiguration c in collection)
         {
             if (c is ConfigurationCollection)
             {
                 Save(configFil, c);
             }
             else if (c is ConfigurationSection)
             {
                 ConfigurationSection _section = configFil.Sections[c.GetType().Name];
                 if (_section != null)
                 {
                     foreach (PropertyInfo pinfo in c.GetType().GetProperties())
                     {
                         if (pinfo.GetCustomAttributes(typeof(ConfigurationPropertyAttribute), true).Length > 0)
                         {
                             pinfo.SetValue(_section, pinfo.GetValue(c, null), null);
                         }
                     }
                 }
                 else
                 {
                     configFil.Sections.Add(c.GetType().Name, c as ConfigurationSection);
                 }
             }
         }
     }
     else
     {
         if (config is ConfigurationSection)
         {
             ConfigurationSection _section = configFil.Sections[config.GetType().Name];
             if (_section != null)
             {
                 foreach (PropertyInfo pinfo in config.GetType().GetProperties())
                 {
                     if (pinfo.GetCustomAttributes(typeof(ConfigurationPropertyAttribute), true).Length > 0)
                     {
                         pinfo.SetValue(_section, pinfo.GetValue(config, null), null);
                     }
                 }
             }
             else
             {
                 configFil.Sections.Add(config.GetType().Name, config as ConfigurationSection);
             }
         }
     }
 }
        private static IConfiguration Load(Configuration configFil, Type t)
        {
            IConfiguration config = Activator.CreateInstance(t) as IConfiguration;

            if (config is ConfigurationCollection)
            {
                ConfigurationCollection collection = config as ConfigurationCollection;
                for (int i = 0; i < collection.Count; i++)
                {
                    collection[i] = Load(configFil, collection[i].GetType());
                }
            }
            else
            {
                IConfiguration _section = configFil.Sections[t.Name] as IConfiguration;
                if (_section != null)
                {
                    config = _section as IConfiguration;
                }
            }
            return(config);
        }