protected static void AssertBoolean(TypeUsage type)
 {
     Assert(
         TypeSemantics.IsPrimitiveType(type, PrimitiveTypeKind.Boolean), "Type Mismatch: Expected Boolean; found {0} instead",
         type.ToString());
 }
 protected static void AssertCollectionType(TypeUsage type)
 {
     Assert(
         TypeSemantics.IsCollectionType(type), "Type Mismatch: Expected Collection type: Found {0}", type.ToString());
 }
示例#3
0
        internal static void AssertEdmType(TypeUsage typeUsage)
        {
            EdmType type = typeUsage.EdmType;

            if (TypeSemantics.IsCollectionType(typeUsage))
            {
                AssertEdmType(TypeHelpers.GetElementTypeUsage(typeUsage));
            }
            else if (TypeSemantics.IsStructuralType(typeUsage) && !Helper.IsComplexType(typeUsage.EdmType) && !Helper.IsEntityType(typeUsage.EdmType))
            {
                foreach (EdmMember m in TypeHelpers.GetDeclaredStructuralMembers(typeUsage))
                {
                    AssertEdmType(m.TypeUsage);
                }
            }
            else if (TypeSemantics.IsPrimitiveType(typeUsage))
            {
                PrimitiveType pType = type as PrimitiveType;
                if (null != pType)
                {
                    if (pType.DataSpace != DataSpace.CSpace)
                    {
                        throw new NotSupportedException(String.Format(CultureInfo.InvariantCulture, "PrimitiveType must be CSpace '{0}'", typeUsage.ToString()));
                    }
                }
            }
        }
示例#4
0
        //
        // Type Description
        //

        internal static string GetFullName(TypeUsage type)
        {
            return(type.ToString());
        }
示例#5
0
 protected static void AssertCollectionType(TypeUsage type)
 {
     Assert(
         TypeSemantics.IsCollectionType(type), "Type Mismatch: Expected Collection type: Found {0}", type.ToString());
 }
示例#6
0
 protected static void AssertBoolean(TypeUsage type)
 {
     Assert(
         TypeSemantics.IsPrimitiveType(type, PrimitiveTypeKind.Boolean), "Type Mismatch: Expected Boolean; found {0} instead",
         type.ToString());
 }
示例#7
0
        private static void RequireCompatibleType(
            DbExpression from,
            RelationshipEndMember end,
            bool allowAllRelationshipsInSameTypeHierarchy)
        {
            TypeUsage typeUsage = end.TypeUsage;

            if (!TypeSemantics.IsReferenceType(typeUsage))
            {
                typeUsage = TypeHelpers.CreateReferenceTypeUsage(TypeHelpers.GetEdmType <EntityType>(typeUsage));
            }
            if (allowAllRelationshipsInSameTypeHierarchy)
            {
                if (TypeHelpers.GetCommonTypeUsage(typeUsage, from.ResultType) == null)
                {
                    throw new ArgumentException(Strings.Cqt_RelNav_WrongSourceType((object)typeUsage.ToString()), nameof(from));
                }
            }
            else if (!TypeSemantics.IsStructurallyEqualOrPromotableTo(from.ResultType.EdmType, typeUsage.EdmType))
            {
                throw new ArgumentException(Strings.Cqt_RelNav_WrongSourceType((object)typeUsage.ToString()), nameof(from));
            }
        }
示例#8
0
        private static List <TypeUsage> GetStructuralMemberTypes(TypeUsage instanceType)
        {
            StructuralType edmType = instanceType.EdmType as StructuralType;

            if (edmType == null)
            {
                throw new ArgumentException(Strings.Cqt_NewInstance_StructuralTypeRequired, nameof(instanceType));
            }
            if (edmType.Abstract)
            {
                throw new ArgumentException(Strings.Cqt_NewInstance_CannotInstantiateAbstractType((object)instanceType.ToString()), nameof(instanceType));
            }
            IBaseList <EdmMember> structuralMembers = TypeHelpers.GetAllStructuralMembers((EdmType)edmType);

            if (structuralMembers == null || structuralMembers.Count < 1)
            {
                throw new ArgumentException(Strings.Cqt_NewInstance_CannotInstantiateMemberlessType((object)instanceType.ToString()), nameof(instanceType));
            }
            List <TypeUsage> typeUsageList = new List <TypeUsage>(structuralMembers.Count);

            for (int index = 0; index < structuralMembers.Count; ++index)
            {
                typeUsageList.Add(Helper.GetModelTypeUsage(structuralMembers[index]));
            }
            return(typeUsageList);
        }
示例#9
0
 private static void RequireCompatibleType(
     DbExpression expression,
     TypeUsage requiredResultType,
     string argumentName,
     int argumentIndex)
 {
     if (!TypeSemantics.IsStructurallyEqualOrPromotableTo(expression.ResultType, requiredResultType))
     {
         if (argumentIndex != -1)
         {
             argumentName = StringUtil.FormatIndex(argumentName, argumentIndex);
         }
         throw new ArgumentException(Strings.Cqt_ExpressionLink_TypeMismatch((object)expression.ResultType.ToString(), (object)requiredResultType.ToString()), argumentName);
     }
 }
示例#10
0
        internal static void ValidateConstant(TypeUsage constantType, object value)
        {
            ArgumentValidation.CheckType(constantType, nameof(constantType));
            EnumType type1;

            if (TypeHelpers.TryGetEdmType <EnumType>(constantType, out type1))
            {
                Type clrEquivalentType = type1.UnderlyingType.ClrEquivalentType;
                if (clrEquivalentType != value.GetType() && (!value.GetType().IsEnum() || !ArgumentValidation.ClrEdmEnumTypesMatch(type1, value.GetType())))
                {
                    throw new ArgumentException(Strings.Cqt_Constant_ClrEnumTypeDoesNotMatchEdmEnumType((object)value.GetType().Name, (object)type1.Name, (object)clrEquivalentType.Name), nameof(value));
                }
            }
            else
            {
                PrimitiveType type2;
                if (!TypeHelpers.TryGetEdmType <PrimitiveType>(constantType, out type2))
                {
                    throw new ArgumentException(Strings.Cqt_Constant_InvalidConstantType((object)constantType.ToString()), nameof(constantType));
                }
                PrimitiveTypeKind primitiveTypeKind;
                if ((!ArgumentValidation.TryGetPrimitiveTypeKind(value.GetType(), out primitiveTypeKind) || type2.PrimitiveTypeKind != primitiveTypeKind) && (!Helper.IsGeographicType(type2) || primitiveTypeKind != PrimitiveTypeKind.Geography) && (!Helper.IsGeometricType(type2) || primitiveTypeKind != PrimitiveTypeKind.Geometry))
                {
                    throw new ArgumentException(Strings.Cqt_Constant_InvalidValueForType((object)constantType.ToString()), nameof(value));
                }
            }
        }
示例#11
0
 internal static void RequirePolymorphicType(TypeUsage type)
 {
     if (!TypeSemantics.IsPolymorphicType(type))
     {
         throw new ArgumentException(Strings.Cqt_General_PolymorphicTypeRequired((object)type.ToString()), nameof(type));
     }
 }