GetArrayRank() public method

public GetArrayRank ( ) : int
return int
Ejemplo n.º 1
0
        private Type GetSystemType(IType type)
        {
            // Get system type from external types
            if (type is ExternalType)
            {
                return(((ExternalType)type).ActualType);
            }

            // Get system array types from arrays of external types
            ArrayType arrayType = type as ArrayType;

            if (arrayType != null)
            {
                Type elementType = GetSystemType(arrayType.GetElementType());
                int  rank        = arrayType.GetArrayRank();

                // Calling MakeArrayType(1) gives a multi-dimensional array with 1 dimensions,
                // which is (surprisingly) not the same as calling MakeArrayType() which gives
                // a single-dimensional array
                return(rank == 1 ? elementType.MakeArrayType() : elementType.MakeArrayType(rank));
            }

            // This shouldn't happen since we only call GetSystemType on external types or arrays of such
            return(null);
        }
Ejemplo n.º 2
0
        private Type GetSystemType(IType type)
        {
            if (type is ExternalType)
            {
                return(((ExternalType)type).ActualType);
            }

            ArrayType arrayType = type as ArrayType;

            if (arrayType != null)
            {
                Type elementType = GetSystemType(arrayType.GetElementType());

                return(Array.CreateInstance(
                           elementType,
                           new int[arrayType.GetArrayRank()]).GetType());
            }

            return(null);
        }