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 dotyczyMethodInfo
s.
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 JonReflectedType
s 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.