コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }