title: Object must implement IConvertible when trying to return a tuple
body: <p>At runtime I get the following error </p>
  
  <blockquote>
    <p>"Object must implement IConvertible"</p>
  </blockquote>
  
  <p>calling function </p>
  
  <pre><code>lboxBuildingType.SelectedIndex = pharse.returning&lt;int&gt;xdoc.Root.Element("BuildingTypeIndex").Value);
  
  public static T returning&lt;T&gt;(object o)
  {
         Tuple&lt;bool, T, object&gt; tmp;
         switch (Type.GetTypeCode(typeof(T)))
         {
          ////blah blah blah
             case TypeCode.Int32:
                tmp= (Tuple&lt;bool,T,object&gt;)Convert.ChangeType(I(o.ToString())), typeof(T)); // error
                break;
          ////blah blah blah
         }
  }
  
  private static Tuple&lt;bool, Int32, Object&gt; I(object o)
  {
        int i;
        bool b;
        Int32.TryParse(o.ToString(), out i);
        b = (i == 0);
        return new Tuple&lt;bool, Int32, object&gt;(b, i, o);
  }
  </code></pre>
  
  <p>The aim of the code is to pass in a <code>&lt;T&gt;("15")</code> and have it produce a <code>tuple&lt;Bool,T,object&gt;</code> which would be <code>tuple&lt;true, 15, "15"&gt;</code></p>
  
  <p>It errors out where I have marked it with a // error</p>