/// <summary> /// Ensures a primitive type reference for a given primitive type kind. /// </summary> /// <param name="type">The possibly null type reference.</param> /// <param name="primitiveKindFromValue">The primitive type kind to ensure.</param> /// <returns>An <see cref="IEdmPrimitiveTypeReference"/> instance created for the <paramref name="primitiveKindFromValue"/> /// if <paramref name="type"/> is null; if <paramref name="type"/> is not null, validates it and then returns it.</returns> private static IEdmPrimitiveTypeReference EnsurePrimitiveType(IEdmPrimitiveTypeReference type, EdmPrimitiveTypeKind primitiveKindFromValue) { if (type == null) { type = EdmCoreModel.Instance.GetPrimitive(primitiveKindFromValue, /*isNullable*/ true); } else { EdmPrimitiveTypeKind primitiveKindFromType = type.PrimitiveDefinition().PrimitiveKind; if (primitiveKindFromType != primitiveKindFromValue) { string typeName = type.FullName(); if (typeName == null) { throw new ODataException(ErrorStrings.EdmValueUtils_IncorrectPrimitiveTypeKindNoTypeName(primitiveKindFromType.ToString(), primitiveKindFromValue.ToString())); } throw new ODataException(ErrorStrings.EdmValueUtils_IncorrectPrimitiveTypeKind(typeName, primitiveKindFromValue.ToString(), primitiveKindFromType.ToString())); } } return(type); }