Warum unterscheidet sich ein Mitglied der Basisklasse von demselben Mitglied in der abgeleiteten Klasse?

Dies ist eine Fortsetzung dieser Frage:Lambda-Ausdruck gibt erwartete MemberInfo nicht zurück

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?

Gleiches gilt fürMethodInfos.

Ich kann verstehen, dass es einen Unterschied geben muss, wannHuman ist eine Schnittstelle oder wannname vonHuman ist abstrakt / virtuell. Aber warum ist es so für versiegelte Typen? Nichtname vonMan genauname vonHuman?

Klärung: Wie Jon sagt ihrReflectedTypes sind anders.ReflectedType in equality sollte sich als nützlich erweisen, wenn Sie die Gleichheit von Schnittstellenmitgliedern oder überschriebenen Mitgliedern entscheiden, da sie unterschiedlich sind. Aber ich denke nicht, dass es für die Entscheidung über die Gleichheit einfacher Fälle wie oben in Betracht gezogen werden sollte. Vielleicht wollte das Designteam konsequent sein. Ich frage mich nur, welche Überlegungen dazu geführt haben, dass Framework-Designer überlegtenReflectedType Eigenschaft bei der Entscheidung über die Gleichheit desselben Mitglieds über mehrere Klassen hinweg.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage