Skip to content

Basic implementation of pipelines -a series of consecutive steps- in .NET

License

Notifications You must be signed in to change notification settings

ferarias/csharp-pipelines

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

csharp-pipelines

Very basic implementation of pipelines (a series of consecutive steps) in .NET

This project is strongly based upon the works by Jeremy Davis An Alternative Approach to Pipelines

Creating a basic pipeline

First we need to create some steps. You can use whatever type you need. Usually you will use some complex types instead of these CLR types.

The only thing you must keep in mind is that the output type of one step must match the input type of the following.

Of course, the input type of the first step must match the input type of the whole pipeline, and the output type of the last step must match the output type of the whole pipeline.

public class Step1 : IPipelineStep<string, string>
    {
        public string Process(string input)
        {
            return input.ToUpper();
        }
    }

public class Step2 : IPipelineStep<string, int>
    {
        public string Process(string input)
        {
            return int.Parse(input);
        }
    }

public class Step3 : IPipelineStep<int, double>
    {
        public string Process(int input)
        {
            return (double)input;
        }
    }

Then we build the pipeline by combinining the steps in order.

public class MyPipeline : Pipeline<string, int>
    {
        public MyPipeline()
        {
            Steps = input => input
            .AddStep(new Step1())
            .AddStep(new Step2())
            .AddStep(new Step3()));
        }
    }

Now we call the pipeline

var pipeline = new MyPipeline();

Log.Information("Input Value: {value} [{type}]", input, input.GetType().Name);

var output = pipeline.Process(input);

Log.Information("Output Value: {value} [{type}]", output, output.GetType().Name);

That's it, actually. Browse the code and suggest whatever you'd like to implement here.

About

Basic implementation of pipelines -a series of consecutive steps- in .NET

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages