public ChainLink(Func <T, bool> canProcess, IProcessor <T> processor, ChainLink <T> successor = null)
     : this(canProcess, processor.Process, successor)
 {
 }
 public ChainLink(ISpecification <T> specification, IProcessor <T> processor, ChainLink <T> successor = null)
     : this(specification.IsSatisfiedBy, processor.Process, successor)
 {
 }
 public ChainLink(Func <T, bool> canProcess, Action <T> process, ChainLink <T> successor = null)
 {
     CanProcess     = canProcess;
     PerformProcess = process;
     Successor      = successor;
 }