title: Constraint where 2 generic types of a class must not be the same
body: <p>How do I define a generic class where I have 2 types that <em>must</em> be different?</p>
  
  <pre><code>// General breeding - could be any animal/species with any animal/species
  public abstract class Breed&lt;TAnimal1, TAnimal2&gt;
      where TAnimal1 : Animal
      where TAnimal2 : Animal
  {
  }
  
  // Must breed among same animal/species
  public abstract class IntraBreed&lt;TAnimal&gt; : Breed&lt;TAnimal, TAnimal&gt;
      where TAnimal : Animal
  {
  }
  
  // Must breed between 2 different animals/species
  public abstract class CrossBreed&lt;TAnimal1, TAnimal2&gt; : Breed&lt;TAnimal1, TAnimal2&gt;
      where TAnimal1 : Animal
      where TAnimal2 : Animal
      where TAnimal1 != TAnimal2 // I need something like this
  {
  }
  </code></pre>