Move data through named stages of an async-style pipeline.

Async Pipeline

AsyncPipeline.cs
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
using System;

class Program
{
    static string RunStage(string stage, int value)
    {
        if (stage == "fetch")
        {
            return $"fetched={value}";
        }

        if (stage == "transform")
        {
            return $"transformed={value * 2}";
        }

        return $"saved={value}";
    }

    static void Main()
    {
        string stage = ;
        int value = ;
        string output = RunStage(stage, value);

        Console.WriteLine($"stage={stage}");
        Console.WriteLine(output);
    }
}
async Pipelines keep each stage small: one step prepares data, the next transforms it, and the final step records the result.