virtual public IEnumerable <string> GetIterationStatements(AggregateFunctionContext context, IList <AggregateExpressionPathItem> pathItems) { AggregateExpressionPathItem lastPathItem = pathItems[pathItems.Count - 1]; string finalTarget = ""; foreach (AggregateExpressionPathItem pathItem in pathItems) { if (pathItem.IsCollection) { finalTarget = pathItem.Object; } } string finalExpression = context.Member.AggregateMappingDescription.FinalExpression; string processedExpression = ""; if ((string.IsNullOrEmpty(finalExpression) || lastPathItem.IsCollection)) { processedExpression = finalTarget; } else { processedExpression = string.Format("{0}.{1}", finalTarget, finalExpression); } string fullFormat = GetFormatForExecutedExpression(context); fullFormat = fullFormat.Replace("FN_OBJ", "{0}"); fullFormat = fullFormat.Replace("CURR_ITEM", "{1}"); return(new string[] { string.Format(fullFormat, context.FunctionObjectName, processedExpression) }); }
public AggregateFunctionContext(MemberMappingDescriptor member, ClassMappingDescriptor descriptor, Type implementationType, string functionObjectName, IAggregateFunctionCodeGenerator generator) { m_member = member; m_generator = generator; m_functionObjectName = functionObjectName; m_implementationType = implementationType; m_descriptor = descriptor; m_pathItems = ExpressionParser.BuildAggregatePathItem(descriptor, member); m_sourceItem = m_pathItems[m_pathItems.Count - 1]; }