Example #1
0
        /// <summary>
        /// Figures out if the given clr type is nonstandard edm primitive like uint, ushort, char[] etc.
        /// and returns the corresponding clr type to which we map like uint => long.
        /// </summary>
        /// <param name="clrType">The potential non-standard CLR type.</param>
        /// <param name="isNonstandardEdmPrimitive">A boolean value out to indicate whether the input CLR type is standard OData primitive type.</param>
        /// <returns>The standard CLR type or the input CLR type itself.</returns>
        public static Type IsNonstandardEdmPrimitive(this Type clrType, out bool isNonstandardEdmPrimitive)
        {
            IEdmPrimitiveTypeReference edmType = clrType?.GetEdmPrimitiveTypeReference();

            if (edmType == null)
            {
                isNonstandardEdmPrimitive = false;
                return(clrType);
            }

            Type reverseLookupClrType = edmType.GetClrPrimitiveType();

            isNonstandardEdmPrimitive = (clrType != reverseLookupClrType);

            return(reverseLookupClrType);
        }