private void GetAcceptableValues(AcceptableValueBase values) { var t = values.GetType(); var listProp = t.GetProperty(nameof(AcceptableValueList <bool> .AcceptableValues), BindingFlags.Instance | BindingFlags.Public); if (listProp != null) { AcceptableValues = ((IEnumerable)listProp.GetValue(values, null)).Cast <object>().ToArray(); } else { var minProp = t.GetProperty(nameof(AcceptableValueRange <bool> .MinValue), BindingFlags.Instance | BindingFlags.Public); if (minProp != null) { var maxProp = t.GetProperty(nameof(AcceptableValueRange <bool> .MaxValue), BindingFlags.Instance | BindingFlags.Public); if (maxProp == null) { throw new ArgumentNullException(nameof(maxProp)); } AcceptableValueRange = new KeyValuePair <object, object>(minProp.GetValue(values, null), maxProp.GetValue(values, null)); ShowRangeAsPercent = (AcceptableValueRange.Key.Equals(0) || AcceptableValueRange.Key.Equals(1)) && AcceptableValueRange.Value.Equals(100) || AcceptableValueRange.Key.Equals(0f) && AcceptableValueRange.Value.Equals(1f); } } }
private static bool TryAcceptableValueList( AcceptableValueBase valueBase, out Type valueType, out object[] values) { values = null; valueType = null; if (valueBase == null) { return(false); } var type = valueBase.GetType(); if (type.GetGenericTypeDefinition() != typeof(AcceptableValueList <>)) { return(false); } valueType = type.GetGenericArguments()[0]; // ReSharper disable once PossibleNullReferenceException var helper = typeof(GeneratedOI) .GetMethod(nameof(AcceptableValueListHelper), BindingFlags.Static | BindingFlags.NonPublic) .MakeGenericMethod(valueType); values = (object[])helper.Invoke(null, new object[] { valueBase }); return(true); }