管道编程(定义功能接口 -> 实现功能函数 -> 组装功能函数 )

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    //首先,我们需要定义一个功能接口,用于约束每个功能函数的具体实现,示例代码如下所示:
    public interface IPipelineStep<INPUT, OUTPUT>
    {
        OUTPUT Process(INPUT input);
    }
    //然后,我们定义两个类型转换的功能类,继承并实现上述接口,示例代码如下所示:
    public class DoubleToIntStep : IPipelineStep<double, int>
    {
        public int Process(double input)
        {
            return Convert.ToInt32(input);
        }
    }

    public class IntToStringStep : IPipelineStep<int, string>
    {
        public string Process(int input)
        {
            return input.ToString();
        }
    }
    //接着,定义一个扩展函数,用于连接上述的各个功能函数,示例代码如下所示:
    public static class PipelineStepExtensions
    {
        public static OUTPUT Step<INPUT, OUTPUT>(this INPUT input, IPipelineStep<INPUT, OUTPUT> step)
        {
            return step.Process(input);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            double input = 1024.1024;

            // 构建并使用管道
            string result = input.Step(new DoubleToIntStep())
                                 .Step(new IntToStringStep());
            Console.WriteLine(result);
        }
    }
    
}

  

posted @ 2020-08-31 09:36  消逝的風  阅读(8)  评论(0)    收藏  举报