private void ApplyChannelPipeline(int policyIndex, WcfInvocation wcfInvocation, Action<WcfInvocation> action) { if (policyIndex >= pipeline.Length) { action(wcfInvocation); return; } var nextIndex = policyIndex + 1; wcfInvocation.SetProceedDelegate(() => ApplyChannelPipeline(nextIndex, wcfInvocation, action)); pipeline[policyIndex].Apply(wcfInvocation); }