title: How to invoke a delegate with optional params?
body: <p>I have the following: </p>
  
  <pre><code>var availableDelegates = new Dictionary&lt;string, SampleHandler&gt;{
      {"TestWithNoParams", SampleHandlerOne }, // this is what I have now - working
      {"TestWithParamSetA", SampleHandlerTwo } // need this
      {"TestWithNoParams", SampleHandlerTwo } // and this - working
  }
  
  public static SampleHandler SampleHandlerOne(){
       // do stuff - working
  }
  
  // v1
  public static SampleHandler SampleHandlerTwo(){
       // do stuff without parameters - working
  }
  
  // v2
  public static SampleHandler SampleHandlerTwo(HandlerTwoParams params = null) { // trying to update to support optional params
       // do stuff with parameters - not working
       // params.Foo = bar
  }
  </code></pre>
  
  <p>How can I pass optional parameters to a delegate?  The idea would be that I can do:</p>
  
  <pre><code>if (someCondition)
      availableDelegates[target].Invoke(optionalParams);
  else
      availableDelegates[target].Invoke();
  </code></pre>