internal static Exception BindingSourceNotFound(BindingMemberExpressionNode node) { return (new InvalidOperationException( string.Format("The source cannot be found parameter name '{0}', binding member '{1}'", node.ParameterName, node.Path))); }
private IExpressionNode VisitMethodCall(IMethodCallExpressionNode methodCall) { _isMulti = true; if (methodCall.Target != null) { return(methodCall); } BindingMemberExpressionNode member = GetOrAddBindingMember(string.Empty, (s, i) => new BindingMemberExpressionNode(string.Empty, s, i)); return(new MethodCallExpressionNode(member, methodCall.Method, methodCall.Arguments, methodCall.TypeArgs).Accept(this)); }
private Expression BuildBindingMember(BindingMemberExpressionNode bindingMember) { var param = Parameters.FirstOrDefault(expression => expression.Value.Name == bindingMember.ParameterName); if (param.Value != null) { return(param.Value); } var index = bindingMember.Index; if (index >= SourceValues.Count) { throw BindingExceptionManager.BindingSourceNotFound(bindingMember); } var parameter = SourceValues[index]; Type type = typeof(object); if (parameter == null) { var binding = DataContext.GetData(BindingConstants.Binding); if (binding != null) { var last = binding.SourceAccessor.Sources[index].GetPathMembers(false).LastMember; type = last.Type; } } else { type = parameter.GetType(); } var exParam = Expression.Parameter(type, bindingMember.ParameterName); Parameters.Add(new KeyValuePair <int, ParameterExpression>(index, exParam)); return(exParam); }
internal static Exception BindingSourceNotFound(BindingMemberExpressionNode node) { return(new InvalidOperationException($"The source cannot be found parameter name '{node.ParameterName}', binding member '{node.Path}'")); }