protected override bool ParseValue(object value) { if (TryCastBool(value, out var asBool)) { if (IsValueAllowed(asBool)) { return(asBool); } } // given value is not allowed, return the current set value instead if (Value is bool currentValue && IsValueAllowed(currentValue)) { return(currentValue); } var predefinedValues = PredefinedValues.ToList(); if (predefinedValues.Count == 0) { return(!IsValueAllowed(false)); } return(PredefinedValues.OfType <bool>().FirstOrDefault()); }
protected override KeyValuePair <TKey, TValue> ParseValue(object value) { if (value is KeyValuePair <TKey, TValue> asKeyValuePair && IsValueAllowed(asKeyValuePair)) { return(asKeyValuePair); } // given value is not allowed, return the current set value instead if (Value is KeyValuePair <TKey, TValue> currentValue && IsValueAllowed(currentValue)) { return(currentValue); } var predefinedValues = PredefinedValues.ToList(); if (predefinedValues.Count == 0) { return(new KeyValuePair <TKey, TValue>()); } return(PredefinedValues.OfType <KeyValuePair <TKey, TValue> >().FirstOrDefault()); }