public static IAggregatePipelineTaskBuilder <ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>, TContext, TContext> Else <TPipelineTaskBuilder, TParentContext, TContext>(
            this IAggregatePipelineTaskBuilder <ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>, TContext, TContext> builder)
            where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
        {
            var aggBuilder = new AggregatePipelineTaskBuilder <ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>, TContext>(builder.Builder);

            builder.Builder.FalseTask = aggBuilder;

            return(builder.Builder.FalseTask);
        }
        /*
         * public static IAggregatePipelineTaskBuilder<ForEachPipelineTaskBuilder<TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext<TContext, TElement>> BeginPipeline<TPipelineTaskBuilder, TParentContext, TContext, TElement>(
         *  this ForEachPipelineTaskBuilder<TPipelineTaskBuilder, TParentContext, TContext, TElement> builder)
         *  where TPipelineTaskBuilder : IPipelineTaskBuilder<TParentContext>
         * {
         *  if (!builder.Task.Closed)
         *  {
         *      return builder.Task;
         *  }
         *
         *  throw new Exception("Cannot begin a pipeline that is already closed");
         * }
         */
        public static IAggregatePipelineTaskBuilder <ForEachPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext <TContext, TElement> > BeginPipeline <TPipelineTaskBuilder, TParentContext, TContext, TElement>(
            this IAggregatePipelineTaskBuilder <ForEachPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext <TContext, TElement> > builder)
            where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
        {
            if (!builder.Builder.Task.Closed)
            {
                return(builder.Builder.Task);
            }

            throw new Exception("Cannot begin a pipeline that is already closed");
        }
Ejemplo n.º 3
0
        public static IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> RunAction <TPipelineTaskBuilder, TParentContext, TContext>(
            this IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> builder,
            Action <TContext> action)
            where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
        {
            var task = new ActionTaskPipelineBuilder <TContext>()
            {
                Action = action
            };

            builder.EnqueueTask(task);

            return(builder);
        }
        /*
         * public static ForEachPipelineTaskBuilder<TPipelineTaskBuilder, TParentContext, TContext, TElement> ForEach<TPipelineTaskBuilder, TParentContext, TContext, TElement>(
         *  this IAggregatePipelineTaskBuilder<TPipelineTaskBuilder, TParentContext, TContext> builder,
         *  Expression<Func<TContext, IEnumerable<TElement>>> selector)
         *  where TPipelineTaskBuilder : IPipelineTaskBuilder<TParentContext>
         * {
         *  var task = new ForEachPipelineTaskBuilder<TPipelineTaskBuilder, TParentContext, TContext, TElement>(builder)
         *  {
         *      Selector = selector
         *  };
         *
         *  builder.EnqueueTask(task);
         *
         *  var aggBuilder = new AggregatePipelineNewContextTaskBuilder<ForEachPipelineTaskBuilder<TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext<TContext, TElement>>(task);
         *  task.Task = aggBuilder;
         *
         *  return task;
         * }
         */
        public static IAggregatePipelineTaskBuilder <ForEachPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext <TContext, TElement> > ForEach <TPipelineTaskBuilder, TParentContext, TContext, TElement>(
            this IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> builder,
            Expression <Func <TContext, IEnumerable <TElement> > > selector)
            where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
        {
            var task = new ForEachPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext, TElement>(builder)
            {
                Selector = selector
            };

            builder.EnqueueTask(task);

            task.Task = new AggregatePipelineNewContextTaskBuilder <ForEachPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext <TContext, TElement> >(task);

            return(task.Task);
        }
        public static IAggregatePipelineTaskBuilder <ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>, TContext, TContext> If <TPipelineTaskBuilder, TParentContext, TContext>(
            this IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> builder,
            Expression <Func <TContext, bool> > condition)
            where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
        {
            var task = new ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>(builder)
            {
                Condition = condition
            };

            builder.EnqueueTask(task);

            var aggBuilder = new AggregatePipelineTaskBuilder <ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>, TContext>(task);

            task.TrueTask = aggBuilder;

            return(task.TrueTask);
        }
 public static IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> EndForEach <TPipelineTaskBuilder, TParentContext, TContext, TElement>(
     this IAggregatePipelineTaskBuilder <ForEachPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext, TElement>, TContext, IForEachTaskContext <TContext, TElement> > builder)
     where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
 {
     return(builder.Builder.Builder);
 }
 public static TPipelineTaskBuilder EndPipeline <TPipelineTaskBuilder, TParentContext, TContext>(this IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> builder)
     where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
 {
     builder.Close();
     return(builder.Builder);
 }
 public ForEachPipelineTaskBuilder(IAggregatePipelineTaskBuilder <TAggregatePipelineTaskBuilderParent, TParentContext, TContext> builder)
 {
     this.Builder = builder;
 }
 public static IAggregatePipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext> EndIf <TPipelineTaskBuilder, TParentContext, TContext>(
     this IAggregatePipelineTaskBuilder <ConditionalPipelineTaskBuilder <TPipelineTaskBuilder, TParentContext, TContext>, TContext, TContext> builder)
     where TPipelineTaskBuilder : IPipelineTaskBuilder <TParentContext>
 {
     return(builder.Builder.Builder);
 }
 public ConditionalPipelineTaskBuilder(IAggregatePipelineTaskBuilder <TAggregatePipelineTaskBuilderParent, TParentContext, TContext> builder)
 {
     Ensure.Arg(builder, nameof(builder)).IsNotNull();
     this.Builder = builder;
 }