public static Pipeline BuildPipelineWithAtributeBlocks(string action, int processor, RequestHandler request) { _lstPipelineBlocks.TryGetValue(action, out List <PipelineBuilderBlock> lst); if (lst == null) { return(null); } Pipeline pipeline = new Pipeline(); foreach (PipelineBuilderBlock blck in lst) { PipelineBlock b = blck.CreatePipelineblock(); foreach (PipelineBuilderBlockActions blckAction in blck._lstActions) { //skip if there is no match on processor if ((blckAction._processor > 0) && (processor != blckAction._processor)) { continue; } PipelineElement.PipelineExecutionFunc func = blckAction.CreatePipelineFunc(b); pipeline.AddStep(new PipelineElement(b._sName, blckAction._order, func)); } } return(pipeline); }
internal PipelineElement.PipelineExecutionFunc CreatePipelineFunc(PipelineBlock b) { //instead of doing Reflection we will do magic with delegates //return (PipelineElement.PipelineExecutionFunc)_mInfo.CreateDelegate(typeof(PipelineElement.PipelineExecutionFunc), b); return(delegate(PipelineContext ctx) { return (PipelineElement.EXECUTIONSTATUS)_func(b, ctx); }); }