/// <summary> /// Resolves types for the specified expression. /// </summary> /// <param name="expression">The expression to resolve types for.</param> /// <returns>Expression with resolved types.</returns> public QueryExpression Visit(LinqMemberMethodExpression expression) { var resolvedSource = this.ResolveTypes(expression.Source, this.EvaluationStrategy); var resolvedResultType = this.GetDefaultQueryType(expression.MemberMethod.ReturnType); var resolvedArguemnts = this.ResolveTypesForArguments(expression.Arguments); return(new LinqMemberMethodExpression(resolvedSource, expression.MemberMethod, resolvedResultType, resolvedArguemnts)); }
public override string Visit(LinqMemberMethodExpression expression) { ExceptionUtilities.CheckArgumentNotNull(expression, "expression"); var convertedArguments = expression.Arguments.Select(a => this.Convert(a)).ToList(); convertedArguments.Insert(0, this.Convert(expression.Source)); string argValues = string.Join(",", convertedArguments.ToArray()); return(string.Format(CultureInfo.InvariantCulture, "{0}({1})", expression.MemberMethod.FullName.ToLowerInvariant(), argValues)); }
/// <summary> /// Generates System.CodeDom.CodeExpression from the given expression. /// </summary> /// <param name="expression">The root node of the expression tree being visited.</param> /// <returns>The result of visiting this expression.</returns> public virtual CodeExpression Visit(LinqMemberMethodExpression expression) { var instance = this.GenerateCode(expression.Source); var arguments = this.GenerateCodeForArguments(expression.Arguments).ToArray(); var memberAnnotation = expression.MemberMethod.Annotations.OfType <MemberInSpatialTypeAnnotation>().FirstOrDefault(); ExceptionUtilities.CheckObjectNotNull(memberAnnotation, "Currently only spatial types have member methods. The method must include MemberInSpatialTypeAnnotation."); if (memberAnnotation.IsStaticMember == true) { return(new CodeTypeReferenceExpression(((QueryMappedScalarTypeWithStructure)expression.Source.ExpressionType).ClrType).Call(expression.MemberMethod.Name, arguments)); } return(instance.Call(expression.MemberMethod.Name, arguments)); }
/// <summary> /// Visits a QueryExpression tree whose root node is the LinqMemberMethodExpression. /// </summary> /// <param name="expression">The root node of the expression tree being visited.</param> /// <returns>Replaced expression.</returns> public virtual QueryExpression Visit(LinqMemberMethodExpression expression) { var source = this.ReplaceExpression(expression.Source); var replacedArguments = this.ReplaceArguments(expression.Arguments); if (this.HasChanged(expression.Source, source) || this.HasChanged(expression.Arguments.ToList(), replacedArguments)) { return(new LinqMemberMethodExpression(source, expression.MemberMethod, expression.ExpressionType, replacedArguments.ToArray())); } else { return(expression); } }
public override string Visit(LinqMemberMethodExpression expression) { ExceptionUtilities.CheckArgumentNotNull(expression, "expression"); var convertedArguments = expression.Arguments.Select(a => this.Convert(a)).ToList(); convertedArguments.Insert(0, this.Convert(expression.Source)); string argValues = string.Join(",", convertedArguments.ToArray()); return string.Format(CultureInfo.InvariantCulture, "{0}({1})", expression.MemberMethod.FullName.ToLowerInvariant(), argValues); }
/// <summary> /// Visits a QueryExpression tree whose root node is the LinqMemberMethodExpression. /// </summary> /// <param name="expression">The root node of the expression tree being visited.</param> /// <returns>Uri query string representing the expression.</returns> public virtual string Visit(LinqMemberMethodExpression expression) { throw new TaupoNotSupportedException("Not supported"); }
/// <summary> /// Evaluates the specified expression. /// </summary> /// <param name="expression">The expression to evaluate.</param> /// <returns>Value of the expression.</returns> public virtual QueryValue Visit(LinqMemberMethodExpression expression) { return(this.EvaluateMemberMethod(expression.Source, expression.ExpressionType, expression.MemberMethod, expression.Arguments)); }