private static IList<IPipelineUnit> GetNewLinearPipeline(IPipelineUnit soruceUnit, IEnumerable<IPipelineIntermediate> intermediatesUnit, IPipelineUnit sinkUnit)
 {
     var result = new List<IPipelineUnit> { soruceUnit };
     result.AddRange(intermediatesUnit);
     result.Add(sinkUnit);
     return result;
 }
 public void Link(IPipelineUnit source, IPipelineUnit target)
 {
     var connectableFrom = source as IPipelineConnectableFrom<IPipelineOutputConnector>;
     var connectableTo = source as IPipelineConnectableTo<IPipelineInputConnector>;
     if (connectableFrom == null)
     {
         throw new InvalidPipelineConnectableElementTypeException(source);
     }
     if (connectableTo == null)
     {
         throw new InvalidPipelineConnectableElementTypeException(target);
     }
     Link(connectableFrom, connectableTo);
 }
 public InvalidPipelineConnectableElementTypeException(IPipelineUnit connectableElement)
 {
     elementTypeName = connectableElement.GetType().FullName;
 }