การประกาศคุณสมบัติในคลาสที่ได้รับซึ่งตรงกับชื่อของคุณสมบัติในคลาสฐานจะ "ซ่อน" คุณสมบัตินั้น (เว้นแต่จะแทนที่คุณสมบัติด้วยคีย์เวิร์ด override
) ทั้งคุณสมบัติฐานและคลาสที่ได้รับจะถูกส่งกลับโดย Type.GetProperties()
หากประเภทไม่ตรงกัน อย่างไรก็ตาม หากประเภท do ตรงกัน จะส่งคืนเฉพาะคุณสมบัติของคลาสที่ได้รับอย่างน่าตกใจเท่านั้น ตัวอย่างเช่น:
class A
{
protected double p;
public int P { get { return (int)p; } set { p = value; } }
}
class B : A
{
public new int P { get { return (int)p; } set { p = value; } }
}
class C : B
{
public new float P { get { return (float)p; } set { p = value; } }
}
การโทร typeof(C).GetProperties()
จะส่งกลับเฉพาะ B.P และ C.P. เป็นไปได้ไหมที่จะโทร GetProperties()
ในลักษณะที่ส่งคืนทั้งสาม? เกือบจะแน่นอนมีวิธีที่จะทำได้โดยการสำรวจลำดับชั้นการสืบทอด แต่มีวิธีแก้ปัญหาที่สะอาดกว่าหรือไม่