Beispiel #1
0
        private static ProcessingResult ProcessAssignmentBinding(EvaluatedMemberBinding binding, ProcessingResult instanceResult)
        {
            if (instanceResult.IsSingleItem)
            {
                return(new ProcessingResult(true, SetValue(instanceResult.Result, binding.Member, binding.Result.Result), true));
            }

            var resultList = new List <object>();

            if (binding.Result.IsSingleItem)
            {
                resultList.AddRange(from object instance in instanceResult.GetItems()
                                    select SetValue(instance, binding.Member, binding.Result.Result));
                return(new ProcessingResult(true, resultList));
            }

            var valueEnumerator = binding.Result.GetItems().GetEnumerator();

            valueEnumerator.MoveNext();

            foreach (var instance in instanceResult.GetItems())
            {
                resultList.Add(SetValue(instance, binding.Member, valueEnumerator.Current));
                valueEnumerator.MoveNext();
            }

            return(new ProcessingResult(true, resultList));
        }
Beispiel #2
0
        private static ProcessingResult ProcessMemeberBinding(EvaluatedMemberBinding binding, ProcessingResult instanceResult)
        {
            var childMemberResult = GetMemberInstances(binding.Member, instanceResult);

            childMemberResult = ProcessBindings(binding.EvaluatedBindings, childMemberResult);

            return(SetMemberInstances(binding.Member, instanceResult, childMemberResult));
        }
Beispiel #3
0
        private static ProcessingResult ProcessListBinding(EvaluatedMemberBinding binding, ProcessingResult instanceResult)
        {
            var initializers = binding.EvaluatedInitializers;
            var listResult   = GetMemberInstances(binding.Member, instanceResult);

            listResult = initializers.Aggregate(listResult,
                                                (current, initializer) => ProcessListInitializer(initializer, current));

            return(SetMemberInstances(binding.Member, instanceResult, listResult));
        }