Beispiel #1
0
        private static void CopyFromJaggedToMultidimensionalArray(IList values, Array multidimensionalArray, int[] indices)
        {
            int length = (int)indices.Length;

            if (length == multidimensionalArray.Rank)
            {
                multidimensionalArray.SetValue(CollectionUtils.JaggedArrayGetValue(values, indices), indices);
                return;
            }
            int num = multidimensionalArray.GetLength(length);

            if (((IList)CollectionUtils.JaggedArrayGetValue(values, indices)).Count != num)
            {
                throw new Exception("Cannot deserialize non-cubical array as multidimensional array.");
            }
            int[] numArray = new int[length + 1];
            for (int i = 0; i < length; i++)
            {
                numArray[i] = indices[i];
            }
            for (int j = 0; j < multidimensionalArray.GetLength(length); j++)
            {
                numArray[length] = j;
                CollectionUtils.CopyFromJaggedToMultidimensionalArray(values, multidimensionalArray, numArray);
            }
        }
Beispiel #2
0
        private static void CopyFromJaggedToMultidimensionalArray(IList values, Array multidimensionalArray, int[] indices)
        {
            int num = indices.Length;

            if (num == multidimensionalArray.Rank)
            {
                multidimensionalArray.SetValue(CollectionUtils.JaggedArrayGetValue(values, indices), indices);
                return;
            }
            int   length = multidimensionalArray.GetLength(num);
            IList list   = (IList)CollectionUtils.JaggedArrayGetValue(values, indices);
            int   count  = list.Count;

            if (count != length)
            {
                throw new Exception("Cannot deserialize non-cubical array as multidimensional array.");
            }
            int[] array = new int[num + 1];
            for (int i = 0; i < num; i++)
            {
                array[i] = indices[i];
            }
            for (int j = 0; j < multidimensionalArray.GetLength(num); j++)
            {
                array[num] = j;
                CollectionUtils.CopyFromJaggedToMultidimensionalArray(values, multidimensionalArray, array);
            }
        }
Beispiel #3
0
        private static void CopyFromJaggedToMultidimensionalArray(
            IList values,
            Array multidimensionalArray,
            int[] indices)
        {
            int length1 = indices.Length;

            if (length1 == multidimensionalArray.Rank)
            {
                multidimensionalArray.SetValue(CollectionUtils.JaggedArrayGetValue(values, indices), indices);
            }
            else
            {
                int length2 = multidimensionalArray.GetLength(length1);
                if (((ICollection)CollectionUtils.JaggedArrayGetValue(values, indices)).Count != length2)
                {
                    throw new Exception("Cannot deserialize non-cubical array as multidimensional array.");
                }
                int[] indices1 = new int[length1 + 1];
                for (int index = 0; index < length1; ++index)
                {
                    indices1[index] = indices[index];
                }
                for (int index = 0; index < multidimensionalArray.GetLength(length1); ++index)
                {
                    indices1[length1] = index;
                    CollectionUtils.CopyFromJaggedToMultidimensionalArray(values, multidimensionalArray, indices1);
                }
            }
        }
Beispiel #4
0
        public static Array ToMultidimensionalArray(IList values, Type type, int rank)
        {
            IList <int> dimensions = CollectionUtils.GetDimensions(values, rank);

            while (dimensions.Count < rank)
            {
                dimensions.Add(0);
            }
            Array arrays = Array.CreateInstance(type, dimensions.ToArray <int>());

            CollectionUtils.CopyFromJaggedToMultidimensionalArray(values, arrays, CollectionUtils.ArrayEmpty <int>());
            return(arrays);
        }
        public static Array ToMultidimensionalArray(IList values, Type type, int rank)
        {
            IList <int> dimensions = CollectionUtils.GetDimensions(values);

            while (dimensions.get_Count() < rank)
            {
                dimensions.Add(0);
            }
            Array array = Array.CreateInstance(type, Enumerable.ToArray <int>(dimensions));

            CollectionUtils.CopyFromJaggedToMultidimensionalArray(values, array, new int[0]);
            return(array);
        }