title: C# Casting Generic Type
body: <p>I have a generic interface IConstrained which is implemented by the generic Constrained class. When I attempt to do the code below I get an invalid cast exception.</p>
  
  <pre><code>IConstrained&lt;decimal&gt; decimalLimit = new Constrained&lt;decimal&gt;(1);
  IConstrained&lt;IComparable&gt; comparableLimit = (IConstrained&lt;IComparable&gt;) decimalLimit;
  </code></pre>
  
  <p>Why is it not possible to do this if decimal implements IComparable? What would be the correct way to do this? Thanks.</p>