title: Reflect all possible permutations of a generic type with constraints
body: <p>Given a generic type with constraints:</p>
  
  <pre><code>class MyClass&lt;T&gt; where T: Alpha
  {
  }
  </code></pre>
  
  <p>and implementations of that constraint:</p>
  
  <pre><code>class Alpha {}
  class Bravo : Alpha {}
  class Charlie : Alpha {}
  </code></pre>
  
  <p>How can get generic types for all the combinations at run-time?</p>
  
  <pre><code>// I want these types at run-time
  MyClass&lt;Alpha&gt; 
  MyClass&lt;Bravo&gt; 
  MyClass&lt;Charlie&gt; 
  </code></pre>
  
  <p><strong>EDIT:</strong>  Based on @rich.okelly's answer, I think the real question is this:</p>
  
  <p>How can I find all the types that implement my generic type's constraint at run-time?  </p>
  
  <p>So if I'm given <code>typeof(MyClass&lt;&gt;)</code>, I get the types above.</p>