Почему член базового класса отличается от того же члена в производном классе?
Это продолжение этого вопроса:Лямбда-выражение не возвращает ожидаемого 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?
То же самое относится и кMethodInfo
s.
Я могу понять, что должна быть разница, когдаHuman
это интерфейс, или когдаname
изHuman
является абстрактным / виртуальным. Но почему это так для закрытых типов? неname
изMan
именно такname
изHuman
?
Разъяснение: Как Джон говорит ихReflectedType
с разные.ReflectedType
равенство должно пригодиться при принятии решения о равенстве членов интерфейса или переопределенных членов, поскольку они различны. Но я не думаю, что это следует учитывать для принятия решения о равенстве простых случаев, как указано выше. Может быть, команда дизайнеров хотела быть последовательной. Просто интересно, какое обоснование заставило дизайнеров фреймворков задуматьсяReflectedType
свойство в решении равенства одного и того же члена, охватывающего несколько классов.