示例#1
0
 internal static bool IsPromotableTo(TypeUsage fromType, TypeUsage toType)
 {
     if (toType.EdmType.EdmEquals((MetadataItem)fromType.EdmType))
     {
         return(true);
     }
     if (Helper.IsPrimitiveType(fromType.EdmType) && Helper.IsPrimitiveType(toType.EdmType))
     {
         return(TypeSemantics.IsPrimitiveTypePromotableTo(fromType, toType));
     }
     if (Helper.IsCollectionType((GlobalItem)fromType.EdmType) && Helper.IsCollectionType((GlobalItem)toType.EdmType))
     {
         return(TypeSemantics.IsPromotableTo(TypeHelpers.GetElementTypeUsage(fromType), TypeHelpers.GetElementTypeUsage(toType)));
     }
     if (Helper.IsEntityTypeBase(fromType.EdmType) && Helper.IsEntityTypeBase(toType.EdmType))
     {
         return(fromType.EdmType.IsSubtypeOf(toType.EdmType));
     }
     if (Helper.IsRefType((GlobalItem)fromType.EdmType) && Helper.IsRefType((GlobalItem)toType.EdmType))
     {
         return(TypeSemantics.IsPromotableTo(TypeHelpers.GetElementTypeUsage(fromType), TypeHelpers.GetElementTypeUsage(toType)));
     }
     if (Helper.IsRowType((GlobalItem)fromType.EdmType) && Helper.IsRowType((GlobalItem)toType.EdmType))
     {
         return(TypeSemantics.IsPromotableTo((RowType)fromType.EdmType, (RowType)toType.EdmType));
     }
     return(false);
 }