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