title: C# Generic Events
body: <p>I have a delegate with a generic type as one of the parameters:</p>
  
  <pre><code>public delegate void UpdatedPropertyDelegate&lt;T&gt;(
      RemoteClient callingClient, 
      ReplicableProperty&lt;T&gt; updatedProp, 
      ReplicableObject relevantObject
  );
  </code></pre>
  
  <p>Now, I want a public event that can be subscribed to for other classes to use. Therefore, I did:</p>
  
  <pre><code>public event UpdatedPropertyDelegate&lt;T&gt; UpdatedProperty;
  </code></pre>
  
  <p>However, the compiler doesn't like that. I don't understand why T has to be specified here. Surely it's specified when I fire the event, i.e.:</p>
  
  <pre><code>if (UpdatedProperty != null) 
  {
      UpdatedProperty(this, readProperty, 
          ReplicableObjectBin.GetObjectByID(readProperty.OwnerID));
  }
  </code></pre>
  
  <p>So, am I doing something simple wrong? Or is this a massive failure of understanding?</p>
  
  <p>Thanks.</p>