Dlaczego element klasy bazowej różni się od tego samego członka w klasie pochodnej?

To jest kontynuacja tego pytania:Wyrażenie lambda nie zwraca oczekiwanego elementu MemberInfo

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?

To samo dotyczyMethodInfos.

Rozumiem, że musi być różnica, kiedyHuman jest interfejsem lub kiedyname zHuman jest abstrakcyjny / wirtualny. Ale dlaczego tak jest w przypadku typów zamkniętych? Nie jestname zMan dokładniename zHuman?

Wyjaśnienie: Jak mówi JonReflectedTypes są różne.ReflectedType w równości powinien przydać się przy podejmowaniu decyzji o równości członków interfejsu lub przesłoniętych członków, ponieważ są one różne. Ale nie sądzę, aby należało brać pod uwagę decydowanie o równości prostych przypadków, takich jak powyżej. Być może zespół projektowy chciał być konsekwentny. Zastanawiam się tylko, jakie przesłanki skłoniły projektantów ram do rozważeniaReflectedType własność w podejmowaniu decyzji o równości tego samego członka w wielu klasach.

questionAnswers(1)

yourAnswerToTheQuestion