public override MemberBinding CreateExpression(ref BindingParameter _params) { var configureParameter = PopConfigureParameter(ref _params); return(configureParameter == null ? null : Expression.Bind(PropertyInfo, Configure.CreateObjectExpression(configureParameter))); }
public object PopParameter(ref BindingParameter _params) { var p = _params.Parameters.FirstOrDefault(); _params.Parameters.RemoveAt(0); return(p); }
public BindingParameter PopConfigureParameter(ref BindingParameter _params) { var cp = _params.ArrayParameters.FirstOrDefault(); if (cp != null) { _params.ArrayParameters.RemoveAt(0); } return(cp); }
public List <object> PopParameters(ref BindingParameter _params) { var cp = _params.ArrayParameters.FirstOrDefault(); if (cp == null) { return(null); } _params.ArrayParameters.RemoveAt(0); return(cp.Parameters); }
public override MemberBinding CreateExpression(ref BindingParameter _params) { object _param = null; if (_constant == null) { _param = PopParameter(ref _params); } else { _param = _constant; } if (_param == null) { return(null); } return(Expression.Bind(PropertyInfo, ConvertTypeConstant(_param, PropertyInfo.PropertyType))); }
public override MemberBinding CreateExpression(ref BindingParameter _params) { var genericType = GetGenericType(); var elementType = GetElementType(); var cp = PopConfigureParameter(ref _params); if (cp == null) { return(Expression.Bind(PropertyInfo, Expression.NewArrayInit(genericType ?? elementType, new Expression[] { }))); } return(Expression.Bind(PropertyInfo, Expression.NewArrayInit(genericType ?? elementType, _(cp)))); IEnumerable <Expression> _(BindingParameter __params) { foreach (var param in __params.ArrayParameters) { yield return(Configure.CreateObjectExpression(param)); } } }
public override MemberBinding CreateExpression(ref BindingParameter _params) { var elemntType = GetElementType(); var genericType = GetGenericType(); IEnumerable <object> __params; if (_constant == null || typeof(IEnumerable).IsAssignableFrom(_constant.GetType()) || _constant.GetType() == typeof(string)) { __params = PopParameters(ref _params); } else { __params = (IEnumerable <object>)_constant; } if (__params == null) { return(Expression.Bind(PropertyInfo, Expression.NewArrayInit(genericType ?? elemntType, new Expression[] { }))); } return(Expression.Bind(PropertyInfo, Expression.NewArrayInit(genericType ?? elemntType, __params.Select(x => ConvertTypeConstant(x, genericType ?? elemntType))))); }
public override MemberBinding CreateExpression(ref BindingParameter _params) { var call = ExpressionHelper.FindExpressionCall(CallExpression); return(Expression.Bind(PropertyInfo, call)); }
public abstract MemberBinding CreateExpression(ref BindingParameter _params);
public override MemberBinding CreateExpression(ref BindingParameter _params) => Expression.Bind(PropertyInfo, ConvertExpression.AnalyzeConvertExpression(PopParameter(ref _params)));
public override MemberBinding CreateExpression(ref BindingParameter _params) => Expression.Bind(PropertyInfo, Expression.NewArrayInit(GetGenericType(), PopParameters(ref _params).Select(x => ConvertExpression.AnalyzeConvertExpression(x))));