title: C# Action and Func parameter overloads
body: <p>I need a method that takes an Action (or a Func), but the Action has a mixed number of parameters. What is the most straight forward and compact way to implement these overloads:</p>
  
  <pre><code>public void Execute&lt;T&gt;(Action&lt;T&gt; action, T param) {
      // TODO: Implement something like:
      // Execute(action, param, null);
  }
  
  public void Execute&lt;T1,T2&gt;(Action&lt;T1,T2&gt; action, T1 param1, T2 param2) {
      // TODO: Implement something like:
      // Execute(action, param1, param2, null);
  }
  
  public void Execute&lt;T1,T2,T3&gt;(Action&lt;T1,T2,T3&gt; 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) { ... } // ???
  </code></pre>
  
  <p>The content of the methods are exactly the same, except for the execution of the action and its parameters.</p>
  
  <p><em>If possible, don't use any C# 4.0-specific features to solve this.</em></p>