/// <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); }