title: Inherit from System.Timers.ElapsedEventArgs to make unit testing easier
body: <p>When I try to inherit from System.Timers.ElapsedEventArgs I'm not able to make a valid class because the only constructor is internal (gotten from 1)</p>
  
  <p>I want to do this because I want to be able to create an instance of the class I'm deriving, and pass that as an argument when Invoking the Timer's elapsed event for unit testing.</p>
  
  <p>To help with the testing I created a layer of indirection with a different event as a property on the class which I can invoke using a public method. I know this isn't the right way to do things right now but I want to get the test working and them I'm going to figure out a way to substitute the system clock/timer.</p>
  
  <p>The new event as a property:</p>
  
  <pre><code>public event System.Timers.ElapsedEventHandler PerformEvent;
  </code></pre>
  
  <p>The chained events. This way it fires if time elapses or I can invoke it on my own:</p>
  
  <pre><code>this.m_timer.Elapsed += this.PerformEvent;
  </code></pre>
  
  <p>I'm trying to create a public way of invoking it and can't new up a ElapsedEventArgs.</p>
  
  <pre><code>    public void FireEvent()
      {
          object o = new object();
          this.PerformEvent.Invoke(o, objectIWantToBeElapsedEventArgs)
      }
  </code></pre>
  
  <p>1: <a href="http://referencesource.microsoft.com/#System/services/timers/system/timers/ElapsedEventArgs.cs,fa59a445f56b7851" rel="nofollow">http://referencesource.microsoft.com/#System/services/timers/system/timers/ElapsedEventArgs.cs,fa59a445f56b7851</a></p>
  
  <pre><code>   internal ElapsedEventArgs(int low, int high) {        
          long fileTime = (long)((((ulong)high) &lt;&lt; 32) | (((ulong)low) &amp; 0xffffffff));
          this.signalTime = DateTime.FromFileTime(fileTime);                        
      }
  </code></pre>