這是一個後續到這樣一個問題:Lambda expression not returning expected 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
秒。
我可以理解,當Human
是一個接口,或者當Human
的name
是抽象/虛擬時,必須有差別。但爲什麼密封類型呢?是不是name
的Man
正好name
的Human
?
澄清:由於Jon說他們的ReflectedType
s是不同的。 ReflectedType
在決定界面成員或被覆蓋成員的平等時應該來得方便,因爲他們是不同的。但我認爲不應該考慮決定上述簡單案例的平等。可能是設計團隊想要保持一致。只是想知道什麼原因促使框架設計者在決定跨越多個類的同一成員的平等時考慮ReflectedType
屬性。
喬恩,我明白了,他們可能在許多其他方面有所不同,但我的問題更像是爲什麼C#/。NET團隊決定如此。我會讓我的問題清楚 – nawfal 2013-04-29 10:27:56
@nawfal:我想有些情況下知道哪種類型的信息是有用的。老實說,我不確定他們*在許多其他方面會有什麼不同。如果你的問題真的是「爲什麼ReflectedType」存在?那就完全不同了。 – 2013-04-29 10:30:38
還有一點:http://startbigthinksmall.wordpress.com/2008/12/10/retrieving-the-base-definition-for-a-propertyinfo-net-reflection-mess/ – Ani 2013-04-29 12:18:28