private ArrayInfo GetArrayInfo(Type arrayType) { // Caching is unacceptable, as an array of type string can have different bounds var info = new ArrayInfo(); // Fill the dimension infos for (var dimension = 0; dimension < GetRank(arrayType); dimension++) { var dimensionInfo = new DimensionInfo(); dimensionInfo.Length = GetLength(dimension, arrayType); dimensionInfo.LowerBound = GetLowerBound(dimension, arrayType); info.DimensionInfos.Add(dimensionInfo); } return(info); }