private ParameterCacheValue ConvertParamterInternal(LambdaExpression expression) { var multiExpression = Visit(ContextReplacerVisitor.UpdateContextParameter(expression.Body)); var func = Compile <object[]>(multiExpression, true); var members = _members.Select(pair => pair.Value).ToArray(); var actions = _callbacks.ToArray(); return(new ParameterCacheValue(actions, func, members)); }
private void ConvertInternal(LambdaExpression expression) { var multiExpression = Visit(ContextReplacerVisitor.UpdateContextParameter(expression.Body)); if (_members.Count == 0) { AddBuildCallback(builder => builder.GetOrAddBindingSources().Add(context => EmptyObserver.Instance)); } else { for (int i = 0; i < _members.Count; i++) { var value = _members[i].Value; AddBuildCallback(builder => builder.GetOrAddBindingSources().Add(value)); } } if (!(multiExpression is ParameterExpression)) { var func = Compile <IList <object> >(multiExpression, false); AddBuildCallback(builder => builder.Add(BindingBuilderConstants.MultiExpression, func)); } }
private void ConvertInternal(LambdaExpression expression) { var multiExpression = Visit(ContextReplacerVisitor.UpdateContextParameter(expression.Body)); if (_members.Count == 0) { AddBuildCallback(syntax => syntax.ToSource(context => BindingExtensions.CreateBindingSource(context, string.Empty, null))); } else { for (int i = 0; i < _members.Count; i++) { var value = _members[i].Value; AddBuildCallback(syntax => syntax.ToSource(value)); } } if (!(multiExpression is ParameterExpression)) { var func = Compile <IList <object> >(multiExpression, false); AddBuildCallback(syntax => syntax.Builder.Add(BindingBuilderConstants.MultiExpression, func)); } }
static ContextReplacerVisitor() { Instance = new ContextReplacerVisitor(); }