/// <summary> /// Creates a navigation resource expression /// </summary> /// <param name="expressionType">The expression type.</param> /// <param name="type">the return type of the expression</param> /// <param name="source">the source expression</param> /// <param name="memberExpression">property member name</param> /// <param name="resourceType">the element type of the resource</param> /// <param name="expandPaths">expand paths for resource set</param> /// <param name="countOption">count query option for the resource</param> /// <param name="customQueryOptions">custom query options for resource</param> /// <param name="projection">the projection expression</param> /// <param name="resourceTypeAs">TypeAs type</param> /// <param name="uriVersion">version of the Uri from the expand and projection paths</param> /// <param name="operationName">The operation name.</param> /// <param name="operationParameters">The operation parameter names and parameters pair for Resource</param> /// <returns>The navigation resource expression.</returns> internal static QueryableResourceExpression CreateNavigationResourceExpression(ExpressionType expressionType, Type type, Expression source, Expression memberExpression, Type resourceType, List <string> expandPaths, CountOption countOption, Dictionary <ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection, Type resourceTypeAs, Version uriVersion, string operationName, Dictionary <string, string> operationParameters) { Debug.Assert( expressionType == (ExpressionType)ResourceExpressionType.RootResourceSet || expressionType == (ExpressionType)ResourceExpressionType.ResourceNavigationProperty || expressionType == (ExpressionType)ResourceExpressionType.RootSingleResource, "Expression type is not one of following: RootResourceSet, ResourceNavigationProperty, RootSingleResource."); QueryableResourceExpression expression = null; if (expressionType == (ExpressionType)ResourceExpressionType.RootResourceSet || expressionType == (ExpressionType)ResourceExpressionType.ResourceNavigationProperty) { expression = new ResourceSetExpression(type, source, memberExpression, resourceType, expandPaths, countOption, customQueryOptions, projection, resourceTypeAs, uriVersion); } if (expressionType == (ExpressionType)ResourceExpressionType.RootSingleResource) { expression = new SingletonResourceExpression(type, source, memberExpression, resourceType, expandPaths, countOption, customQueryOptions, projection, resourceTypeAs, uriVersion); } if (expression != null) { expression.OperationName = operationName; expression.OperationParameters = operationParameters; return(expression); } return(null); }
/// <summary> /// Creates a navigation resource expression /// </summary> /// <param name="expressionType">The expression type.</param> /// <param name="type">the return type of the expression</param> /// <param name="source">the source expression</param> /// <param name="memberExpression">property member name</param> /// <param name="resourceType">the element type of the resource</param> /// <param name="expandPaths">expand paths for resource set</param> /// <param name="countOption">count query option for the resource</param> /// <param name="customQueryOptions">custom query options for resource</param> /// <param name="projection">the projection expression</param> /// <param name="resourceTypeAs">TypeAs type</param> /// <param name="uriVersion">version of the Uri from the expand and projection paths</param> /// <param name="operationName">The operation name.</param> /// <param name="operationParameters">The operation parameter names and parameters pair for Resource</param> /// <returns>The navigation resource expression.</returns> internal static QueryableResourceExpression CreateNavigationResourceExpression(ExpressionType expressionType, Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection, Type resourceTypeAs, Version uriVersion, string operationName, Dictionary<string, string> operationParameters) { Debug.Assert( expressionType == (ExpressionType)ResourceExpressionType.RootResourceSet || expressionType == (ExpressionType)ResourceExpressionType.ResourceNavigationProperty || expressionType == (ExpressionType)ResourceExpressionType.RootSingleResource, "Expression type is not one of following: RootResourceSet, ResourceNavigationProperty, RootSingleResource."); QueryableResourceExpression expression = null; if (expressionType == (ExpressionType)ResourceExpressionType.RootResourceSet || expressionType == (ExpressionType)ResourceExpressionType.ResourceNavigationProperty) { expression = new ResourceSetExpression(type, source, memberExpression, resourceType, expandPaths, countOption, customQueryOptions, projection, resourceTypeAs, uriVersion); } if (expressionType == (ExpressionType)ResourceExpressionType.RootSingleResource) { expression = new SingletonResourceExpression(type, source, memberExpression, resourceType, expandPaths, countOption, customQueryOptions, projection, resourceTypeAs, uriVersion); } if (expression != null) { expression.OperationName = operationName; expression.OperationParameters = operationParameters; return expression; } return null; }