我有两个功能,只有一些条件不同。可以统一吗?

时间:2017-05-03 22:07:14

标签: c# dry

所以我有这两种方法:

    public static string Figure2D()
    {
        dynamic shapeValue;
        do
        {
            shapeValue = Presentation.Present();
        }
        while (shapeValue.Is3D);
        return shapeValue.ToString("R");
    }

    public static string Figure3D()
    {
        dynamic shapeValue;
        do
        {
            shapeValue = Presentation.Present();
        }
        while (!shapeValue.Is3D);
        return shapeValue.ToString("R");
    }

他们之间的唯一区别是时间条件。如何将这两者合并为一个函数?传递参数值可能是必要的&可以接受,但我想保持简短。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

怎么样

public static string Figure(Predicate<dynamic> p)
    {
        dynamic shapeValue;
        do
        {
            shapeValue = Presentation.Present();
        }
        while (p(shapeValue));
        return shapeValue.ToString("R");
    }