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)); }
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)); }
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)); }