title: Why is a member of base class different from the same member in derived class?
body: <p>This is a followup to this question: <a href="https://stackoverflow.com/questions/6658669/lambda-expression-not-returning-expected-memberinfo">Lambda expression not returning expected MemberInfo</a></p>
  
  <pre><code>class Human
  {
      public string name { get; set; }
  }
  
  class Man : Human
  {
  
  }
  
  var m1 = typeof(Human).GetProperty("name");
  var m2 = typeof(Man).GetProperty("name");
  
  //m1 != m2 why?
  </code></pre>
  
  <p>The same holds for <code>MethodInfo</code>s. </p>
  
  <p>I can understand there has to be a difference when <code>Human</code> is an interface, or when <code>name</code> of <code>Human</code> is abstract/virtual. But why is it so for sealed types? Isn't <code>name</code> of <code>Man</code> exactly <code>name</code> of <code>Human</code>?</p>
  
  <p><strong>Clarification:</strong> As Jon says their <code>ReflectedType</code>s are different. <code>ReflectedType</code> in equality should come handy when deciding equality of interface members or overridden members since they are different. But I don't think it should be considered for deciding equality of simple cases like above. May be the design team wanted to be consistent. Just wondering what rationale drove framework designers to consider <code>ReflectedType</code> property in deciding equality of same member spanning over multiple classes.</p>