コード例 #1
0
        public static bool IsExistsIndexedValue(Object value, int index)
        {
            if (value == null)
            {
                return(false);
            }

            var asArray = value as Array;

            if (asArray != null)
            {
                return(asArray.Length > index);
            }

            var asString = value as string;

            if (asString != null)
            {
                return(asString.Length > index);
            }

            var asType        = value.GetType();
            var asGenericList = asType.FindGenericInterface(typeof(IList <>));

            if (asGenericList != null)
            {
                var asList = MagicMarker.GetListFactory(value.GetType()).Invoke(value);
                return(asList.Count > index);
            }

            return(false);
        }
コード例 #2
0
        public static Object GetIndexedValue(Object value, int index)
        {
            if (value == null)
            {
                return(null);
            }

            var asArray = value as Array;

            if (asArray != null)
            {
                if (asArray.Length <= index)
                {
                    return(null);
                }

                return(asArray.GetValue(index));
            }

            var asString = value as string;

            if (asString != null)
            {
                if (asString.Length <= index)
                {
                    return(null);
                }

                return(asString[index]);
            }

            var asType        = value.GetType();
            var asGenericList = asType.FindGenericInterface(typeof(IList <>));

            if (asGenericList != null)
            {
                var asList = MagicMarker.GetListFactory(value.GetType()).Invoke(value);
                if (asList.Count <= index)
                {
                    return(null);
                }

                return(asList[index]);
            }

            return(null);
        }
コード例 #3
0
        public static IList <object> AsObjectList(this object value)
        {
            if (value == null)
            {
                return(null);
            }
            else if (value is IList <object> asList)
            {
                return(asList);
            }
            else if (value.GetType().IsGenericList())
            {
                return(MagicMarker
                       .GetListFactory(value.GetType())
                       .Invoke(value));
            }

            throw new ArgumentException("invalid value for object list");
        }