title: Conversion from Func<object,string> to Func<string,string> works but to Func<int,string> fails
body: <p>I have the following code:</p>
  
  <pre><code>static Func&lt;object, string&gt; s_objToString = (x) =&gt; x.ToString();
  static Func&lt;string, string&gt; s_stringToString = s_objToString; //compiles
  static Func&lt;int, string&gt; s_intToString = s_objToString; //error
  </code></pre>
  
  <p>The second line compiles but the third line fails to compile with error: </p>
  
  <blockquote>
    <p>Cannot implicitly convert type '<code>System.Func&lt;object,string&gt;</code>' to '<code>System.Func&lt;int,string&gt;</code>'</p>
  </blockquote>
  
  <p><strong>Why is that?</strong></p>
  
  <p>I understand that with genetics although string is derived from object a <code>List&lt;string&gt;</code> does not derive from <code>List&lt;object&gt;</code>, but here <code>object</code> to <code>string</code> works and <code>object</code> to <code>int</code> fails, why? </p>
  
  <p>OK let's say I understood why; the question now is there a way around it (other then defining <code>MyInt</code> class to box <code>int</code> because <code>Func&lt;object,string&gt;</code> to <code>Func&lt;MyInt,string&gt;</code> works)?</p>