title: LambdaExpression gets incorrect DeclaringType for overriden property
body: <p>I have following classes:</p>
  
  <pre><code>public class Foo
  {
      public virtual string FooProperty { get; set; }
  }
  public class Bar : Foo
  {
      public override string FooProperty { get =&gt; base.FooProperty; set =&gt; base.FooProperty = value; }
  }
  </code></pre>
  
  <p>I define a lambda expression:</p>
  
  <pre><code>Expression&lt;Func&lt;Bar, string&gt;&gt; expression = (Bar b) =&gt; b.FooProperty;
  </code></pre>
  
  <p>When I check the DeclaringType of the MemberExpression I get type <code>Foo</code> and not <code>Bar</code> like I expected. Why is this?</p>
  
  <pre><code>var type = (expression.Body as MemberExpression).Member.DeclaringType;   // returns Foo type
  </code></pre>