public static void OverrideValues(UndoRedoStack urs, ISettingsPropertyDefinition current, ISettingsPropertyDefinition @new) { if (SettingsUtils.Equals(current, @new)) { return; } switch (current.SettingType) { case SettingType.Bool: urs.Do(new SetValueTypeAction <bool>(current.PropertyReference, (bool)@new.PropertyReference.Value)); break; case SettingType.Int: urs.Do(new SetValueTypeAction <int>(current.PropertyReference, (int)@new.PropertyReference.Value)); break; case SettingType.Float: urs.Do(new SetValueTypeAction <float>(current.PropertyReference, (float)@new.PropertyReference.Value)); break; case SettingType.String: urs.Do(new SetStringAction(current.PropertyReference, (string)@new.PropertyReference.Value)); break; case SettingType.Dropdown: urs.Do(new SetDropdownIndexAction(current.PropertyReference, SettingsUtils.GetSelector(@new.PropertyReference.Value))); break; } }