コード例 #1
0
        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));
        }
コード例 #2
0
        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));
            }
        }
コード例 #4
0
 static ContextReplacerVisitor()
 {
     Instance = new ContextReplacerVisitor();
 }