title: How to overcome C# List<generic<T>> constraint
body: <p>I have the following situation:</p>
  
  <p>I have several Event classes that share common behaviour like StartEvent and StopEvent.<br>
  I also have a special class each Event class works with (like pickups and you need to collect all of them to finish the event)<br>
  So I thought I'd make the BaseEvent class generic and each derived version provides its special partner class so I can have a base implementation to keep each in their list etc.<br>
  Now the tricky part is, that I have an EventManager that needs to know all events. But as far as I know, C# is not capable of doing this:</p>
  
  <pre><code>List&lt;BaseEvent&lt;T&gt;&gt; baseEvents = new List&lt;BaseEvent&lt;T&gt;&gt;();
  </code></pre>
  
  <p>this simple restriction kills the whole concept. I read about using an interface parallel to the BaseClass to be able to put them into the list, but is that really the only option I have?</p>