public TPipeline GetPipeline <TPipeline>() where TPipeline : IPipeline { var pipeline = (TPipeline)_pool.Get(typeof(TPipeline)); if (pipeline == null) { var type = typeof(TPipeline); pipeline = (TPipeline)GuardedComponentResolver().Resolve(type); if (pipeline == null) { throw new InvalidOperationException( string.Format(Resources.NullPipelineException, type.FullName)); } if (_pool.Contains(pipeline)) { throw new InvalidOperationException( string.Format(Resources.DuplicatePipelineInstanceException, type.FullName)); } OnPipelineCreated(this, new PipelineEventArgs(pipeline)); } else { OnPipelineObtained(this, new PipelineEventArgs(pipeline)); } return(pipeline); }