public Editor(object owner) { foreach (PropertyInfo f in owner.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Where(f => f.GetCustomAttributes(typeof(EditablePreferenceAttribute), false).Any())) { EditableInfo info = new EditableInfo(f); editables.Add(info.Name, info); } this.owner = owner; }
public string Unset(string name) { EditableInfo info = GetEditableInfo(name); if (!info.CanUnset) { throw new ArgumentException("Can't unset '" + name + "' preference."); } string old = Get(name); info.DirectAccessor.Set(owner, info.Default); return(old); }