Example #1
0
        /// <summary>
        /// Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type
        /// described by the NpgsqlNativeTypeInfo supplied.
        /// </summary>
        public static NpgsqlNativeTypeInfo ArrayOf(NpgsqlNativeTypeInfo elementType)
        {
            if (elementType._IsArray)
            //we've an array of arrays. It's the inner most elements whose type we care about, so the type we have is fine.
            {
                return(elementType);
            }

            NpgsqlNativeTypeInfo copy = null;
            ArrayNativeToBackendTypeConverter converter = new ArrayNativeToBackendTypeConverter(elementType);

            if (elementType._ConvertNativeToBackendBinary != null)
            {
                copy = new NpgsqlNativeTypeInfo("_" + elementType.Name, NpgsqlDbType.Array | elementType.NpgsqlDbType, elementType.DbType,
                                                false,
                                                converter.ArrayToArrayText,
                                                converter.ArrayToArrayBinary);
            }
            else
            {
                copy = new NpgsqlNativeTypeInfo("_" + elementType.Name, NpgsqlDbType.Array | elementType.NpgsqlDbType, elementType.DbType,
                                                false,
                                                converter.ArrayToArrayText);
            }

            copy._IsArray = true;

            return(copy);
        }
        /// <summary>
        /// Returns an NpgsqlNativeTypeInfo for an array where the elements are of the type
        /// described by the NpgsqlNativeTypeInfo supplied.
        /// </summary>
        public static NpgsqlNativeTypeInfo ArrayOf(NpgsqlNativeTypeInfo elementType)
        {
            if (elementType._IsArray)
            //we've an array of arrays. It's the inner most elements whose type we care about, so the type we have is fine.
            {
                return elementType;
            }

            NpgsqlNativeTypeInfo copy = null;
            ArrayNativeToBackendTypeConverter converter = new ArrayNativeToBackendTypeConverter(elementType);

            if (elementType._ConvertNativeToBackendBinary != null)
            {
                copy = new NpgsqlNativeTypeInfo("_" + elementType.Name, NpgsqlDbType.Array | elementType.NpgsqlDbType, elementType.DbType,
                                                false,
                                                converter.ArrayToArrayText,
                                                converter.ArrayToArrayBinary);
            }
            else
            {
                copy = new NpgsqlNativeTypeInfo("_" + elementType.Name, NpgsqlDbType.Array | elementType.NpgsqlDbType, elementType.DbType,
                                                false,
                                                converter.ArrayToArrayText);
            }

            copy._IsArray = true;

            return copy;
        }