static public void Reload(string configfile = null) { Cliver.Config.Reload(); foreach (SettingsFieldInfo sfi in Cliver.Config.GetSettingsFieldInfos()) { sections2SettingsFieldInfo[sfi.Name] = sfi; } if (configfile == null) { ReadOnly = false; } else { ReadOnly = true; Dictionary <string, Dictionary <string, object> > sections2parameters2value = Serialization.Json.Load <Dictionary <string, Dictionary <string, object> > >(configfile); foreach (string section in sections2parameters2value.Keys) { Dictionary <string, object> parameters2value = sections2parameters2value[section]; SettingsFieldInfo sfi = sections2SettingsFieldInfo[section]; Cliver.Settings o = sfi.GetObject(); foreach (string p in parameters2value.Keys) { FieldInfo fi = sfi.Type.GetField(p, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); object v = parameters2value[p]; setValue(fi, o, v); } } } }
static public void Set(string section, string parameter, object value) { SettingsFieldInfo sfi = sections2SettingsFieldInfo[section]; FieldInfo fi = sfi.Type.GetField(parameter, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); Cliver.Settings o = sfi.GetObject(); setValue(fi, o, value); }
static public object Get(string section, string parameter) { SettingsFieldInfo sfi = sections2SettingsFieldInfo[section]; FieldInfo fi = sfi.Type.GetField(parameter, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); Cliver.Settings o = sfi.GetObject(); return(fi.GetValue(o)); }
static public void Save(string configfile = null) { if (configfile == null) { Cliver.Config.Save(); } else { Dictionary <string, Dictionary <string, object> > sections2parameters2value = new Dictionary <string, Dictionary <string, object> >(); foreach (string s in sections2SettingsFieldInfo.Keys) { SettingsFieldInfo sfi = sections2SettingsFieldInfo[s]; Dictionary <string, object> parameters2value = new Dictionary <string, object>(); sections2parameters2value[s] = parameters2value; Cliver.Settings o = sfi.GetObject(); foreach (FieldInfo fi in sfi.Type.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)) { parameters2value[fi.Name] = fi.GetValue(o); } } Serialization.Json.Save(configfile, sections2parameters2value); } }