private static void SetValueOnProperty(PropertyInfo property, SettingsToggleSetting setting, IRoutineSettings settingsInstance, bool checkedOn) { switch (setting.Type) { case SettingType.Boolean: property.SetValue(settingsInstance, checkedOn ? Convert.ChangeType(setting.BoolCheckedValue, property.PropertyType) : Convert.ChangeType(setting.BoolUncheckedValue, property.PropertyType)); break; case SettingType.Integer: property.SetValue(settingsInstance, checkedOn ? Convert.ChangeType(setting.IntCheckedValue, property.PropertyType) : Convert.ChangeType(setting.IntUncheckedValue, property.PropertyType)); break; case SettingType.Float: property.SetValue(settingsInstance, checkedOn ? Convert.ChangeType(setting.FloatCheckedValue, property.PropertyType) : Convert.ChangeType(setting.FloatUncheckedValue, property.PropertyType)); break; default: throw new ArgumentOutOfRangeException(); } }
public static bool SettingToggleSettingMatchesProperty(SettingsToggleSetting setting, PropertyInfo property, IRoutineSettings iroutineSettingsInstance) { switch (setting.Type) { case SettingType.Boolean: var boolValue = (bool)property.GetValue(iroutineSettingsInstance, null); return(setting.BoolCheckedValue == boolValue); case SettingType.Integer: var intValue = (int)property.GetValue(iroutineSettingsInstance, null); return(setting.IntCheckedValue == intValue); case SettingType.Float: var floatValue = (float)property.GetValue(iroutineSettingsInstance, null); return(setting.FloatCheckedValue == floatValue); case SettingType.None: return(false); default: throw new ArgumentOutOfRangeException(); } }