我需要一个方法,接受一个Action(或Func),但是这个Action有多个不同类型的参数。最简单和紧凑的实现这些重载的方法是什么:
public void Execute<T>(Action<T> action, T param) {
// TODO: Implement something like:
// Execute(action, param, null);
}
public void Execute<T1,T2>(Action<T1,T2> action, T1 param1, T2 param2) {
// TODO: Implement something like:
// Execute(action, param1, param2, null);
}
public void Execute<T1,T2,T3>(Action<T1,T2,T3> action, T1 param1, T2 param2, T3 param3) {
DoStuff();
action(param1, param2, param3)
DoMoreStuff();
}
// OR any other type of higher order function-solution
public void Execute(Action action, params object[] parameters) { ... } // ???
这些方法的内容完全相同,除了执行的操作和其参数。
如果可能的话,请不要使用任何C# 4.0特定的功能来解决此问题。