Exemplo n.º 1
0
        public static Type GetClrType(this IEdmModel edmModel, IEdmTypeReference edmTypeReference, IAssemblyResolver assembliesResolver)
        {
            if (edmTypeReference == null)
            {
                throw new ArgumentNullException(nameof(edmTypeReference));
            }

            if (edmTypeReference.Definition.IsEquivalentTo(_coreModel.GetUntypedType()))
            {
                return(typeof(object));
            }

            Type primitiveClrType = _builtInTypesMapping
                                    .Where(kvp => edmTypeReference.Definition.IsEquivalentTo(kvp.Value) && (!edmTypeReference.IsNullable || IsNullable(kvp.Key)))
                                    .Select(kvp => kvp.Key)
                                    .FirstOrDefault();

            if (primitiveClrType != null)
            {
                return(primitiveClrType);
            }
            else
            {
                Type clrType = edmModel.GetClrType(edmTypeReference.Definition, assembliesResolver);
                if (clrType != null && TypeHelper.IsEnum(clrType) && edmTypeReference.IsNullable)
                {
                    return(TypeHelper.ToNullable(clrType));
                }

                return(clrType);
            }
        }