将动态参数传递给类似函数

时间:2011-11-16 13:39:25

标签: c# .net

我有一个运行其他功能的功能(内部功能)。所以每个内部函数都是主要功能的一步。 每次内部函数结束运行时我都要更新进度。每个内部函数都接受当前进度作为参数,我手动完成。

问题是我有大约10个主要功能,而每个主要功能的内部功能数量都在变化。

有没有办法在这个流程中引入某种动态值?

示例:

public void Run() {
DoWork1(33);
DoWork2(66);
Dowork3(100);
}

public void Run() {
DoWork1(25);
DoWork4(50);
Dowork5(75);
Dowork2(100);
}

1 个答案:

答案 0 :(得分:6)

public void Run(params Action<int>[] actions)
{      
    for (int i = 0; i < actions.Length; i++)
    {
        Action<int> action = actions[i];
        int progress = ((i + 1) * 100) / actions.Length;
        action(progress);
    }
}

然后用:

调用它
Run(DoWork1, DoWork2, DoWork3);

Run(DoWork1, DoWork4, DoWork5, DoWork2);