title: Correct usage of generics in event declaration
body: <p>I have a data object which I pass around :</p>
  
  <pre><code>public class TimedResult&lt;T&gt;
  {
      public ResultRequest Request { get; set; }
      public T Data { get; set; }
      public TimeSpan TimeTaken { get; set; }
  }
  </code></pre>
  
  <p>In my Manager class I have some work done which raises an event :</p>
  
  <pre><code>public void Execute(ResultRequest request)
  {
      var result = new TimedResult&lt;DataTable&gt;();
      // fill data object here
      OnResult(result);
  }
  </code></pre>
  
  <p>I have made the <code>OnResult</code> method generic :</p>
  
  <pre><code>protected virtual void OnResult&lt;T&gt;(TimedResult&lt;T&gt; result)
  {
      if (Result != null)
          Result(this, result);
  }
  </code></pre>
  
  <p><strong>But how do I make the event declaration generic?</strong></p>
  
  <pre><code>public event EventHandler&lt;TimedResult&lt;T&gt;&gt; Result; // red line under T
  </code></pre>
  
  <p><strong>How should I be doing this?</strong></p>