title: Get the Type behind the Interface of the return value
body: <p>Given this little example code:</p>
  
  <pre><code>class Program
  {
  
      static void Main(string[] args)
      {
          var testInstance = new TestClass();
          Func&lt;TestClass, IComparable&gt; testFunction = (test =&gt; test.DoubleProperty);
          var functionType = testFunction.GetType();                       // "Func`2"
          var returnType = testFunction.Method.ReturnType;                 // IComparable
          var typeOfReturnType = testFunction.Method.ReturnType.GetType(); // RuntimeType
      }
  }
  
  class TestClass
  {
      public int IntProperty { get; set; }
  
      public double DoubleProperty { get; set; }
  }
  </code></pre>
  
  <p>I would like to get the Type behind <code>IComparable</code> which should be in this case <code>double</code>.</p>
  
  <p>That <code>testFunction.GetType();</code> will return <em>Func´2</em> is clear to me. <br/><br/>
  The return <code>IComparable</code> of <code>testFunction.Method.ReturnType;</code> is also clear and has the value I would expect. <br/><br/>
  But is it possible to get the original return type <code>double</code> without Invoking the Method <code>testFunction</code>?</p>